【发布时间】:2021-04-21 11:48:25
【问题描述】:
我这里有一些代码。 我知道这个引用不会在匿名函数中进行。 但是这里,即使使用对象的函数,里面的this也就是window。
var MyClass = function (div) {
this.array = [];
};
MyClass.prototype = {
addToArray: function (elem) {
this.array.push(elem);
},
processAndAdd: function(elemArray){
elemArray.forEach(this.addToArray);
}
}
var myObj = new MyClass();
myObj.processAndAdd([1, 2, 3]);
console.log('test');
错误:行:this.array.push(elem);
未定义的推送。
经过检查,这里是窗口对象
我想知道为什么这里是窗口,以及如何重组我的代码以正确处理这个问题。
【问题讨论】:
-
当您将函数引用传递给
forEach时,它会丢失其this,因为它不再在this上被调用(即:myObj)。.forEach()方法允许您为回调指定 this:.forEach(this.addToArray, this)
标签: javascript class this prototype