JavaScript:将函数存储在对象中,但在本地上下文中执行它

标签 javascript function object scope

我有一个像这样的对象:

objectx = {
    1: {
        name: "first",
        loadFunction: function() { 
            $(target).load("http://stackoverflow.com #question", function() {
                // do something else
            });
        }
    },
    2: {
        name: "second",
        loadFunction: function() { 
            $(target).load("http://stackoverflow.com #answer", function() {
                // do something else
            });
        }
    }
}

当我使用 objectx[1].loadFunction() 调用函数时,它们没有本地上下文,因此我必须将所有内容作为参数传递或使我的变量成为全局变量。例如:

function doSomething() {
    var target; // this variable holds a reference to a DOM object

    objectx[1].loadFunction()
}

target is not defined

如何执行函数以便它们知道调用它们的上下文?

最佳答案

由于 JavaScript 中词法作用域的工作方式,这是不可能的(按照你的方式)。

你想要一个函数参数,简单明了。无论如何,编写依赖于全局状态的函数都是不好的风格。

var objectx = {
    1: {
        name: "first",
        loadFunction: function(target) { 
            $(target).load("http://stackoverflow.com #question", function() {
                // do something else
            });
        }
    }
}

function doSomething() {
    var target; // this variable holds a reference to a DOM object

    objectx[1].loadFunction(target);
}

完成。

关于JavaScript:将函数存储在对象中,但在本地上下文中执行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24550073/

相关文章:

javascript - React Native - 如何水平滑动卡片并给它们留出边距

function - 使用默认值和/或没有特定顺序的 Erlang 函数调用

ruby - 如何在不调用函数的情况下引用它,因为 foo 与 foo() 相同,因此它已经被调用

javascript - 从一个 Controller 访问另一个 Controller 的数据 - AngularJS

php - 删除 <script> 标签 - PHP

javascript - 如何使用javascript将两个对象的值合并为一个

javascript - 单击时全屏 div

c - 通过 C 中的其他过程使用变量

c++ - 为什么 C++ 在将一个对象复制到另一个对象时需要对两个对象进行低级 const 限定?

javascript - 无法访问不可变对象(immutable对象)中的嵌套对象