gpt4 book ai didi

javascript - Function.prototype.call.call 的简写?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:53:22 27 4
gpt4 key购买 nike

调用函数的方式

考虑这个简单的函数:

function my(p) { console.log(p) }

我可以这样调用它:

my("Hello");

也像这样:

my.call(this, "Hello");

此外,这是可能的:

Function.prototype.call.call(my, this, "Hello");

功能方式的简写

我对最后一个选项很感兴趣 - 最实用的一个,但是因为它太长了我试着简写一下:

var call = Function.prototype.call.call;

为了这样称呼我:

call(my, this, "Hello");

但是我得到了这个类型错误:

TypeError: Function.prototype.call called on incompatible undefined

有谁知道,这里出了什么问题?

最佳答案

当你说

var call = Function.prototype.call.call;

最后一个调用 失去了它的实际上下文。您需要明确说明 call 属于 Function.prototype.call

你可以通过创建一个新函数来做到这一点,它实际上像这样绑定(bind)它

var call = Function.prototype.call.call.bind(Function.prototype.call);
call(my, this, "Hello");
// Hello

bind 函数返回一个新函数,调用时会将上下文 (this) 设置为 Function.prototype.call

关于javascript - Function.prototype.call.call 的简写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30889321/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com