gpt4 book ai didi

javascript - 在 JavaScript 中正确包装函数

转载 作者:行者123 更新时间:2023-12-02 19:55:23 24 4
gpt4 key购买 nike

我有以下问题:

我有一个函数

workspace.func = function() {console.log(5);}

我将其附加为事件处理程序:

$(workspace).bind("ping", workspace.func);

然后,我更改函数定义:

var cF = workspace.func;
workspace.func = function() {
...
cf.call(this);
}

但是

$(workspace).trigger("ping")
>>5

如何在运行时正确包装函数,以便处理程序也指向更改的函数?

最佳答案

你可以这样做:

workspace.func = function() {console.log(5);}
$(workspace).bind("ping", function() {workspace.func()});

var cF = workspace.func;
workspace.func = function() {
...
cf.call(this);
}

重新分配 workspace.func 的值后,ping 事件处理程序将转到新函数,因为它从变量获取函数指针,然后执行它,因此如果您更改该变量的函数指向,它将获取新值 - 与原始版本不同,原始版本引用了实际函数,因此更改 workspace.func 变量没有执行任何操作。

关于javascript - 在 JavaScript 中正确包装函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8723785/

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