![](/img/trans.png)
[英]How do I pass a method through another method without it being called, and pass a variable object into it?
[英]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
對象中沒有內置的方法來到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;
你的問題是因為你沒有inner_function
調用了正確的價值this
。 因此請確保this
其正確綁定到它。 例如:
plugin.init(document.config.outer.inner.bind(document.config))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.