var myNumber = {
value: 1,
add: function(i){
var helper = function(i){
console.log(this);
this.value += i;
}
helper(i);
}
}
myNumber.add(1);
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
新手最常见的错误之一,你在对象外面执行的函数,this就是Window,把this绑定给另一个变量就好了
this关键字指向错误,在这里如果你执行add方法里的逻辑this关键字指向是正确的,但是你这里还内部定义了一个函数闭包并执行,所里在内部定义的函数的关键字的指向就发生了改变
函数调用的时候,函数内部的this指向调用该函数的对象。而,helper函数的调用对象相当于是window.
--update2--
对题主的代码进行了一点修改
区别在于原来使用
helper(i),改成了helper.call(myNumber, i);,这样子可以保证在helper函数内部的this对象指向的是
myNumber,而不是原来的window对象。如果不用helper函数的,可以简单点,
这样子呢?
--update--