gpt4 book ai didi

javascript - 将 function.call 与此参数一起用于函数参数

转载 作者:行者123 更新时间:2023-11-30 20:07:56 25 4
gpt4 key购买 nike

我在下面有一个创建对象构造函数的简单示例。有一个 add 方法尝试通过调用 Array.prototype.forEach 方法遍历 arguments 集合。

该技术有效,但我对 this 值有疑问。

我采用了将 this 赋值给一个真实变量 (This) 的技巧,并在内部函数中使用了真实值。这行得通,但我认为它应该更简单。

根据 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call ,我应该能够在开头使用可选的 thisArg 来调用它。我已经在 add2 方法中试过了。这行不通

call 方法中为 this 参数包含新值的正确方法是什么?

function Collection() {
this.data=[];
}
Collection.prototype={
constructor: Collection,
add() {
var This=this;
Array.prototype.forEach.call(arguments,function(value) {
This.data.push(value);
});
},
add2() {
Array.prototype.forEach.call(this,arguments,function(value) {
this.data.push(value);
});
},
}

var c=new Collection();
c.add('apple','banana');
alert(c.data)

最佳答案

forEachthis 获取一个可选参数,它将在回调中使用。如果您不能使用箭头功能,这应该是一个不错的选择:

function Collection() {
this.data=[];
}
Collection.prototype={
constructor: Collection,

add2() {
Array.prototype.forEach.call(arguments,function(value) {
this.data.push(value);
}, this); // <= pass this in to forEach
},
}

var c=new Collection();
c.add2('apple','banana');
console.log(c.data)

关于javascript - 将 function.call 与此参数一起用于函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52675006/

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