gpt4 book ai didi

Javascript 的 "this"指向给 array.map 的 lambda 中的错误对象

转载 作者:搜寻专家 更新时间:2023-11-01 05:06:55 25 4
gpt4 key购买 nike

function myClass() { 
this.nums = [1,2,3];
this.divisor = 2;
}

myClass.prototype.divideNumsByDivisor = function(){
return this.nums.map(function(num) {
return num*this.divisor;
});
}

myClass.divideNumsByDivisor() 应该将其成员变量 nums 上的每个数字与其成员变量 divisor 上的值相乘。

这不起作用,因为函数 function(num) { return num*this.divisor; 将其指向错误的对象。

最佳答案

根据 MDN.map(fn, thisArg) 的第二个参数是您希望在调用回调函数时将 this ptr 设置为的内容,它将设置为如果您不传递第二个参数,则为全局对象(例如 window)。

所以,你可以让你的例子像这样工作:

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

关于Javascript 的 "this"指向给 array.map 的 lambda 中的错误对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9107131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com