Javascript';s";这";指向给定给array.map的lambda中的错误对象
Javascript';s";这";指向给定给array.map的lambda中的错误对象,javascript,map,scope,this,Javascript,Map,Scope,This,myClass.divideNumByDivisor()用于将其成员变量nums上的每个数字乘以其成员变量除数上的值 这不起作用,因为函数function(num){return num*This.divisor;}将其指向错误的对象。您需要在作用域中定义对实例的引用,然后在其他实例中获取它。将您的方法更新为此 function myClass() { this.nums = [1,2,3]; this.divisor = 2; } myClass.prototype.d
myClass.divideNumByDivisor()
用于将其成员变量nums
上的每个数字乘以其成员变量除数上的值
这不起作用,因为函数function(num){return num*This.divisor;}
将其指向错误的对象。您需要在作用域中定义对实例的引用,然后在其他实例中获取它。将您的方法更新为此
function myClass() {
this.nums = [1,2,3];
this.divisor = 2;
}
myClass.prototype.divideNumsByDivisor = function(){
return this.nums.map(function(num) {
return num*this.divisor;
});
}
根据,调用回调函数时,.map(fn,thisArg)
的第二个参数是希望this
ptr设置为的参数,如果不传递第二个参数,它将设置为全局对象(例如window
)
因此,您可以让您的示例如下所示:
myClass.prototype.divideNumsByDivisor = function(){
var me = this;
return this.nums.map(function(num) { return num*me.divisor; });
}
我没有意识到这一点。非常感谢你。
function myClass() { this.nums = [1,2,3]; this.divisor = 2; }
myClass.prototype.divideNumsByDivisor = function(){
return this.nums.map(function(num) { return num*this.divisor; }, this);
}