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
第一次输出10应该没有问题。我们知道取对象属于除了点操作符还可以用中括号,所以第二次执行时相当于arguments调用方法,this指向arguments,而这里传了两个参数,故输出arguments长度为2。