我建立了一个对dom做事的javascript类。为了尽可能简化外部使用,我现在提供了以下方法:
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();
,但随后我需要确保首先加载它,以免忘记它,这对用户来说意味着额外的代码。
答案 0 :(得分:0)
您可能想看看Singleton。
它正是您要实现的目标。
但是,我必须承认我(和许多其他开发人员)对单例,全局和静态类不满意,这并不是因为性能,而是作为一种通用模式。
This SO question讲述了为什么单例不好。
答案 1 :(得分:0)
@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
版本较短,在这种情况下也具有其他优点。
它不会创建不需要的构造函数和原型对象(甚至可能被滥用,或者至少会使读者感到困惑)。