直接上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| function fn(){console.log('fn print')} function fn1(){console.log('fn1 print')} function fnthis(){console.log(this);}
console.log(fn.call == Function.call) console.log(fn.call.call == Function.call) console.log(Function.call.call == Function.call)
fn.call(fn1) fn.call.call(fn1) Function.call(fn1) Function.call.call(fn1)
fn.call(fnthis) fn.call.call(fnthis) Function.call(fnthis) Function.call.call(fnthis)
|
根据mdn上的call的文档
function.call(thisArg, arg1, arg2, ...)
所以
1 2 3 4
| fn.call(fn1) // 调用fn函数,在函数执行中的 this = fn1, fn.call.call(fn1) // 调用Function.call函数,在函数执行中的 this = fn1, Function.call(fn1) // 调用Function.call函数,但是是参数传递了fn1,而不是this = fn1 Function.call.call(fn1) // 和第二个相同
|