gpt4 book ai didi

javascript - 将 THIS 设置为 array.prototype.reduce() 中的当前对象

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

<分区>

我有一个代码可以将一系列值相加。它需要两个或三个参数,然后使用这些值创建一个数组,然后将它们相加。我的 reduce 对象有一个 addup 方法,它使用 array.reduce() 方法减少它的 this.arr 属性。我发现 THIS 键表示 reduce 函数中的全局对象。为什么它指示 reduce 中的全局对象?我怎样才能使用闭包或类似的东西坚持 reduce 内的当前对象?我试过但找不到解决这个问题的方法。

代码没有问题。它工作正常。

reduce对象的addup方法:

addup:function(){

this.sum= this.arr.reduce(function(previous,current,index,array){
console.log(this);
return previous+current;

});

},

完整代码(如果需要):

<html>
<body>
<script>
var reduce={
start:null,
end:null,
step:null,
args:null,
arr:[],
sum:null,
getrange:function(){
if(arguments.length==2){
this.args=arguments.length;
this.start=arguments[0];
this.end=arguments[1];
}
else if(arguments.length==3){
this.args=arguments.length;
this.start=arguments[0];
this.end=arguments[1];
this.step=arguments[3];

}
},
setarr:function(){
if(this.args==2){
for(i=this.start;i<=this.end;i++){
this.arr.push(i);

}

}
else if(this.args==3){
for(i=this.start;i<=this.end;i+=this.step){
this.arr.push(i);

}

}

},
addup:function(){

this.sum= this.arr.reduce(function(previous,current,index,array){
console.log(this);
return previous+current;

});

},

show:function(){
console.log(this.sum);

},
cleanup:function(){
this.arr.splice(0,this.arr.length);
this.sum=null;

}

}
reduce.getrange(1,5);
reduce.setarr();
reduce.addup();
reduce.show();
</script>
</body>
</html>

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