簡體   English   中英

JavaScript:將函數存儲在對象中,但在本地上下文中執行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM