function f1() {
console.log(this);
console.log(1);
}
function f2() {
console.log(this);
console.log(2)
}
f1.call.call(f2); //Window,2
输出的结果看不懂求大神帮忙
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,
call是一个内部定义的Function对象,f1.call和f2.call都是一样的,是Function.prototype.call,这个很容易证明,只需要试验一下代码就行然后呢
f1.call也是一个Function对象,所以f1.call和f1.call.call应该也是同一个东东,试验下f1.call.call(f2)是把f2作为this对象调用了Function.prototype.call,也就相当于是调用了f2.call()当
call的第 1 个参数是null或undefined的时候this被设置为 global 对象,在浏览器里就是window所以最后结果就是你看到的那样了。