我有一个像这样的对象:
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/