javascriptvarlength=10;functionfn(){console.log(this.length);}varobj={length:5,method:function(fn){fn();arguments[0]();}};obj.method(fn,1);
2 回答
阿晨1998
TA贡献2037条经验 获得超6个赞
输出:102第一次输出10应该没有问题。我们知道取对象属于除了点操作符还可以用中括号,所以第二次执行时相当于arguments调用方法,this指向arguments,而这里传了两个参数,故输出arguments长度为2。
30秒到达战场
TA贡献1828条经验 获得超6个赞
你这段代码,在第三行加一行console.log(this)就知道为什么了。如下jsvarlength=10;functionfn(){console.log(this.length);}varobj={length:5,method:function(fn){fn();arguments[0]();}};obj.method(fn,1);在执行arguments[0]的时候this上下文已经变成arguments啦
添加回答
举报
0/150
提交
取消