猿问

考察this的问题

var length = 10;

function fn() {

  console.log(this.length);

}


var obj = {

  length: 5,

  method: function(fn) {

    fn();

    arguments[0]();

  }

};


obj.method(fn, 1);

为什么输出时10 2?


李天母3956437
浏览 1033回答 1
1回答

stone310

第一个10很好理解,因为是个自执行匿名函数,所以this指向window;第二个 arguments[0](),这里arguments[0]也是fn,但是arguments是个类数组,而这里这里arguments[0]意思就是在arguments这个类数组上选取第1个值,因此第一个值虽然也是fn,但它的执行环境变了,就是arguments这个类数组,因此this.length为2(2个参数)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答