我正在尝试使一些旧代码以最少的修改即可正常工作。该代码是在假设它将从特定上下文运行的前提下编写的。我有上下文对象。

原始代码:

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. loadDataoldExample在单独的文件中定义。
2. contextwindowgBrowser以外还有其他子代;这是一个例子

有没有一种方法可以转换我的oldExample代码以使其正常工作而无需在任何地方填充this.?即,如何在不同的上下文中运行oldExample?

最佳答案

我知道如何执行此操作的唯一方法是将属性定义为当前上下文的变量:

var object = {gBrowser: 'test'};

function oldExample(){
    console.log(gBrowser);
}

var gBrowser = object.gBrowser;
oldExample();


本示例输出“测试”

但这只是将属性访问移到函数定义之外,不会为您节省任何费用。

关于javascript - 更改当前关闭?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24330302/

10-12 14:07