如何将变量传递给对象方法

时间:2019-04-17 19:59:42

标签: javascript variables

我在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方法中设置的变量注入到external.inner.inner_function方法中。但要注意的是,我不能再将任何变量传递到inner_function方法的参数列表中。 (“内部”对象是第三方插件的一组选项,该功能由该插件定义,并且仅包含两个参数)

如何从内部方法中引用this.var1?

谢谢

2 个答案:

答案 0 :(得分:0)

对象没有对包含对象的任何自动引用,因此在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;

答案 1 :(得分:0)

您发生问题是因为您没有用正确的inner_function值调用this。因此,请确保this已正确绑定。例如:

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