js中关于this指向的问题

var myNumber = {
  value: 1,
  add: function(i){
    var helper = function(i){
        console.log(this);
          this.value += i;
    }
    helper(i);
  }
}
myNumber.add(1);

请问这个this为什么指向window?myNumber对象调用的add方法,方法内的this为什么不指向myNumber对象呢?

阅读 1.6k
2 个回答

每个函数都有自己的作用域,addhelper都有自己的作用域;
你修饰性的调用addadd作用域内的thismyNumber,而这个作用域内的helper函数再调用时,没有任何修饰和显示传入this,那么按照规则,helper内的this指向全局window

myNumber.add(1)得到helper函数,helper(i)就是window.helper(i),所以this指向window

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题