为了账号安全,请及时绑定邮箱和手机立即绑定

考察this的问题

考察this的问题

李天母3956437 2016-11-01 00:33:09
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?
查看完整描述

1 回答

?
stone310

TA贡献361条经验 获得超191个赞

第一个10很好理解,因为是个自执行匿名函数,所以this指向window;

第二个 arguments[0](),这里arguments[0]也是fn,但是arguments是个类数组,而这里这里arguments[0]意思就是在arguments这个类数组上选取第1个值,因此第一个值虽然也是fn,但它的执行环境变了,就是arguments这个类数组,因此this.length为2(2个参数)

查看完整回答
反对 回复 2016-11-01
  • 1 回答
  • 1 关注
  • 1032 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信