簡體   English   中英

如何將變量傳遞給對象方法

[英]how to pass a variable to an object method

我在Javascript中有一個類似於下面的對象

var configs = {
    init: function() {
        this.var1 = 'variable 1',
        this.var2 = 'variable 2'
    },

    outer: {
        inner: {
            inner_var1: 'inner variable 1',
            inner_var2: 'inner variable 2',
            inner_var3: 'inner variable 3',
            inner_function: function(item_1, item2) {
                console.log(this.var1);
            }
        }
    }
}

var config = Object.create(configs);
config.init();
document.config = config;

我需要在init方法中將一個變量集注入outer.inner.inner_function方法。 但需要注意的是,我無法將更多變量傳遞到inner_function方法參數列表中。 ('inner'對象是第三方插件的一組選項,該函數由插件定義,只有兩個參數)

如何在內部方法中引用this.var1?

謝謝

對象沒有對其包含對象的任何自動引用,因此在inner對象中沒有內置的方法來到outerconfig 您需要顯式傳遞對象。

所以你需要將它定義為:

inner_function: function(config, item_1, item_2) {
    console.log(config.var1);
}

並稱之為:

document.config.outer.inner.inner_function(document.config, i1, i2);

如果您希望能夠訪問容器而不將它們作為參數傳遞,則需要將它們明確地放入對象中。

var configs = {
    init: function() {
        this.var1 = 'variable 1',
        this.var2 = 'variable 2'
    },

    outer: {
        inner: {
            inner_var1: 'inner variable 1',
            inner_var2: 'inner variable 2',
            inner_var3: 'inner variable 3',
            inner_function: function(item_1, item2) {
                console.log(this.parent.parent.var1);
            }
        }
    }
}
configs.outer.inner.parent = configs.outer;
configs.outer.parent = configs;

你的問題是因為你沒有inner_function調用了正確的價值this 因此請確保this其正確綁定到它。 例如:

plugin.init(document.config.outer.inner.bind(document.config))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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