CNode

问一个有关call的问题

问答
Ssoliury发布于12 年前最后回复12 年前6 回复4416 浏览0 收藏
function f1()
{    
console.log(this);    
console.log(1);
}
function f2(){    
console.log(this);    
console.log(2)
}
f1.call.call(f2);  //Window,2

今天研究了一下call,但是f1.call.call(f2);  //Window,2这里实在是有点不懂,为啥是这样的结果勒?

求大神解析。

查看回复

回复 (6)

S
soliury#1·12 年前
引用 leapon那个 f1 是个幌子。 结果一样

@leapon 哈哈,是的。

T
tulayang#2·12 年前
method.call(f1) ~= f1.method();
Function.prototype.call ~= f1.call ~= f2.call;
f1.call.call(f2); ~= Function.prototype.call.call(f2) ~= f2.call();
S
soliury#3·12 年前
引用 tulayang

@tulayang 嗯嗯,简洁,浅显易懂,谢谢了,懂了。

L
leapon#4·12 年前

真是脑筋急转弯。

$ node
> Function.prototype.call
[Function: call]
> Function.prototype.call.call
[Function: call]
> Function.prototype.call === Function.prototype.call.call
true
S
soliury#5·12 年前
引用 leapon真是脑筋急转弯。

@leapon 哈哈,就是脑筋急转弯

L
leapon#6·12 年前

那个 f1 是个幌子。

(function(){}).call.call(f2)

结果一样

参与回复
登录后即可参与回复。登录