首页 > 解决方案 > 如何将变量传递给对象方法

问题描述

我在 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?

谢谢

标签: javascriptvariables

解决方案


对象没有对其包含对象的任何自动引用,因此在inner对象中没有内置方法可以访问outeror config。您需要显式传递对象。

因此,您需要将其定义为:

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;


推荐阅读