我正在查看JavaScript库的源代码,并在类定义中遇到类似的事情:
var MyClass = function() {
function doSomething() {
// function definition
}
this.doSomething = function() {
doSomething();
};
}
所以,我的问题是:是否有人会这样做,而不是简单地将函数分配给对象方法,如下所示:
this.doSomething = doSomething;
答案 0 :(得分:2)
这取决于doSomething
究竟在做什么。 this
在函数中的绑定方式有所不同。如果按照您的示例调用它,它将不会this
绑定到该对象,而如果您使用它直接分配给某个属性,则this
将绑定到该实例:
var MyClass = function() {
this.n = "Bob";
function doSomething() {
console.log(this.n);
}
this.doSomething = function() {
doSomething();
};
this.doSomethingDirect = doSomething;
}
var x = new MyClass();
x.doSomething(); //undefined
x.doSomethingDirect(); //"Bob"