更改当前闭包
Changing the current closure?
本文关键字:闭包 更新时间:2023-09-26
我正试图让一些旧代码以最小的修改正常工作。代码的编写是基于它将从特定上下文中运行的假设。我有context对象
原始代码:function oldExample(){
console.log(window); //New Error: window is undefined
console.log(gBrowser); //New Error: gBrowser is undefined
}
新的工作代码:
function fixedExample(){
console.log(this.window);
console.log(this.gBrowser);
}
//Elsewhere
function loadData(context) {
fixedExample.call(context);
}
指出:
1. loadData
和oldExample
在单独的文件中定义。
2. context
除window
、gBrowser
外还有其他子代;这是一个例子
是否有一种方法来过渡我的oldExample
代码正常工作,而不需要填充this.
无处不在?例如,我如何在不同的上下文中运行oldExample ?
我知道如何做到这一点的唯一方法是将属性定义为当前上下文的变量:
var object = {gBrowser: 'test'};
function oldExample(){
console.log(gBrowser);
}
var gBrowser = object.gBrowser;
oldExample();
这个例子输出'test'
但是这只是将属性访问移到了函数定义之外,并没有节省任何东西
你可以在javascript中使用bind方法。fixedExample。绑定(上下文);
现在你不需要在fixedExample中使用'this',而可以直接使用window。
相关文章:
- 在underscorejs模板中使用闭包
- setTimeout可以与闭包内的函数一起使用吗
- 附加到原型属性的Do函数没有闭包
- 使用闭包共享构造函数参数
- 使用Google闭包编译器包含一个Ecmascript 6类
- 从js引擎的角度来看闭包和构造函数是如何工作的
- for循环中的JavaScript闭包
- Javascript闭包-如何防止内存泄漏
- 子类访问父类's闭包变量
- 闭包如何具体化数据封装
- Javascript.闭包和dynamic'这'实际上具有约束力
- 构造函数函数闭包变量
- 闭包js框架-将ArrayBuffer转换为字符串
- 如何在Angularjs中重构闭包中的重复代码
- 如何告诉闭包javascript编译器不要混淆webkitAudioContext的方法名称
- Google闭包和生成的getters/ssetter
- 如何冻结函数's在闭包中的变量
- 如何使用外部Javascript库(如jQuery)重命名Google闭包样式表
- 使变量可用于不带闭包的异步调用
- 就良好实践而言,带闭包的javascript原型是一件好事吗