假设我的课程设计为稍后会添加一些回调。
function myclass() {
this.onSomething = function () {};
this.onOtherThing = function () {};
this.something = function () {
// stuff
this.onSomething();
};
this.otherThing = function () {
// other stuff
this.onOtherThing();
};
}
我不能让this.onSomething
和this.onOtherThing
成为undefined
或null
,因为当他们在something()
和otherThing()
中被调用时,将抛出错误,声明他们的类型不是函数。
由于需要那些空函数,但它们使用内存,如果我这样做,那么这个类会更有效吗?
function myclass() {
this.onSomething = empty;
this.onOtherThing = empty;
...
}
function empty() {
}
这样每个类实例的属性都指向相同的空函数,而不是每次都创建新函数。我假设定义一个空方法并不占用大量内存,但仍然......这在技术上是否更好?
答案 0 :(得分:1)
对于为类的每个实例创建一个新函数,你是对的。为了在所有实例中共享它,您可以在类的原型上声明它:
var MyClass = function() {
this.something = function () {
// stuff
this.onSomething();
};
this.otherThing = function () {
// other stuff
this.onOtherThing();
};
}
MyClass.prototype.onSomething = function() {};
MyClass.prototype.onOtherThing = function() {};
这样,所有实例都将共享这些方法。
答案 1 :(得分:0)
为什么不尝试return true
或return false
而不是返回空函数。
或者你最好能使用:
function myclass() {
this.onSomething = false;
this.onOtherThing = false;
...
}
根据您的评论,您可以尝试:
function myclass() {
this.onSomething = empty();
this.onOtherThing = empty();
... }
function empty() {
//return something
return true;
}