function f1() {
console.log(this);
console.log(1);
}
function f2() {
console.log(this);
console.log(2)
}
f1.call.call(f2); //Window,2
输出的结果看不懂求大神帮忙
function f1() {
console.log(this);
console.log(1);
}
function f2() {
console.log(this);
console.log(2)
}
f1.call.call(f2); //Window,2
输出的结果看不懂求大神帮忙
10 回答11.2k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
首先,
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
所以最后结果就是你看到的那样了。