[英]JavaScript: store function in an object, but execute it in local context
我有一個這樣的對象:
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()
}
目標未定義
如何執行功能,以使它們知道調用它們的上下文?
由於詞匯范圍在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中是不可能的。 JS使用詞法作用域 。 您似乎在尋找動態范圍。
最好的辦法是傳遞參數,在范圍內定義它或使用全局變量(不建議使用)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.