题目如下:
var length = 10;
function fn() {
console.log(this.length)
};
var obj = {
length: 5,
method: function (fn) {
fn();
arguments[0]();
fn.call(obj, 12);
}
};
obj.method(fn, 1);
我的解读如下:
obj.method(fn, 1); 这一段其实是method作为obj的方法调用,this隐式绑定到obj上。执行的是
{
// 此次调用的this指向obj,arguments为function () { console.log(this.length) }, 1
fn();
arguments[0]();
fn.call(obj, 12);
}
这三条语句。
第一个fn是打印出this.length,以我的理解,this在调用时确定指向,在method函数内这里的this隐式绑定到obj上,结果是打印出5;
第二条语句其实还是fn,但是this绑定谁我不知道,所以结果我也不知道;
第三条语句的this绑定给obj,后面的12是fn的参数没有用,所以打印出5;
结果我的分析只有最后一个答案是正确的,求解惑。
胡说叔叔
慕的地8271018
相关分类