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);
}