用JavaScript正确包装函数
Properly wrapping functions in JavaScript
我有以下问题:
我有一个功能
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
变量没有任何作用。
相关文章:
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- 从原型更改/包装函数
- 我正在尝试使用 html 元素包装函数的返回值
- 将 ajax .done 作用域扩展到包装函数
- 在javascript中需要帮助包装函数并正确处理“this”
- 包装函数后无法读取属性
- 检查是否调用了包装函数
- 从生成器函数中包装co和co-mysql,并从包装函数中让步
- 窗口对象上具有全局变量的包装函数
- 使用removeEventListener删除包装函数回调
- 用JavaScript正确包装函数
- 如何从包装函数返回javascript ajax调用的结果
- 如何包装函数调用,有时做异步调用,使其行为同步
- 为什么UnderscoreJS有很多原生Javascript函数的包装函数?
- Knockout - keyCode属性没有通过包装函数传递
- Highcharts包装函数'
- 中间javascript: ajax请求的包装函数稍后执行主函数
- 是否有一种聪明的方法来访问包装函数中的变量
- Jquery新手在包装函数时遇到问题
- express 4的异步包装函数没有't捕获错误