我已经构建了一个javascript类,可以完成dom。为了尽可能简化从外部的使用,我现在有这样的方法:
hello.add(id);
hello.delete(id);
hello.select(id);
为了完成上述工作,我设置了一个静态类,它使用非静态类,如下所示:
静态类
class hello {
static add(id) {
let hello = new HelloCore();
hello.add(id);
}
static delete(id) {
let hello = new HelloCore();
hello.delete(id);
}
static select(id) {
let hello = new HelloCore();
hello.select(id);
}
}
非静态类
真正的代码是带有构造函数的500行,依此类推。
class helloCore() {
add() {
// Do something
}
delete() {
// Do something
}
select() {
// Do something
}
}
它现在非常简单,但我想知道这种方法是否存在性能问题。我的猜测是它在每个静态调用内存一个新的javascript对象到内存中?
从一开始我总是需要将对象传递给将要使用的函数。见下文。
let hello = new HelloCore();
function my_function(hello) {
let id = 2;
hello.add(id);
}
my_function(hello);
使用静态方法,我不需要在任何地方传递对象。我可以从任何地方触发功能。
我可以使用全局var hello = new Hello();
然后我需要确保它首先加载,我不会忘记它,它意味着用户的额外代码。
你可能想看看Singleton。 它完全符合您的要求。
但是,我必须承认我(以及许多其他开发人员)对单身,全局和静态类不满意,不是因为性能,而是作为一般模式。 This SO question讲述了为什么单身人士不好。
@mareful评论了这个有用的信息:
使用静态类方法,函数调用后hello实例不再可用...
这意味着静态类将在每次调用后自行清理。
然后我收到了来自@Bergi的评论,想要使用包含相同结果的函数的const
。这种方法非常有效。
之前 - 使用静态类
class hello {
static add(id) {
let hello = new HelloCore();
hello.add(id);
}
static delete(id) {
let hello = new HelloCore();
hello.delete(id);
}
static select(id) {
let hello = new HelloCore();
hello.select(id);
}
}
之后 - 用const
const hello = {
add(id) {
new HelloCore().add(id);
},
delete(id) {
new HelloCore().delete(id);
},
select(id) {
new HelloCore().select(id);
}
};
在这两种情况下,我都可以称之为hello.add(id);
。 const
版本更短,在这种情况下也有一些其他优点。
它不会创建一个永远不需要的构造函数和原型对象(甚至可能被滥用,或者至少会使读者感到困惑)。