我在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?
谢谢
答案 0 :(得分:0)
对象没有对包含对象的任何自动引用,因此在inner
对象中没有内置的方法来访问outer
或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;
答案 1 :(得分:0)
您发生问题是因为您没有用正确的inner_function
值调用this
。因此,请确保this
已正确绑定。例如:
plugin.init(document.config.outer.inner.bind(document.config))