我有一个这样的对象:
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()
}
目标未定义
如何执行这些功能,以便他们了解调用它们的上下文?
答案 0 :(得分:2)
这是不可能的(你的方式),因为词法范围在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);
}
完成。
答案 1 :(得分:1)
这在JavaScript中是不可能的。 JS使用词汇scoping。你似乎在寻找的是动态范围。
您可以做的最好的事情是传递参数,在范围内定义它,或使用全局变量(小于推荐值)。