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对象呢?


呼啦一阵风
浏览 346回答 2
2回答

郎朗坤

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

Qyouu

myNumber.add(1)得到helper函数,helper(i)就是window.helper(i),所以this指向window
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript