[英]JavaScript access parent element
我需要在子元素的函數中訪問包含元素的變量。 我該如何實現?
object = {
a : {
c : function() {
//need to access b here
},
d : 2
},
b : 1
};
在這種情況下,我需要訪問函數c
的變量b
。 我用bind()
嘗試了一些變體,但沒有任何效果。 JavaScript訪問父對象屬性問題對我不起作用。 我無法到達變量object
,因為該對象嵌套得更深。
做a
成一個getter。
object = {
get a() {
var self = this;
return {
c: function() {
return self.b;
},
d: 2
}
},
b : 1
};
或者,例如,如果c
不需要this
來引用d
,則
object = {
get a() {
return {
c: () => this.b,
d: 2
}
},
b : 1
};
object
被深嵌套並不重要。 只需使用object.b
。
var object; ([{a:[{b:[{c:[{d:[{e:[{f: // deeply nested object = { a: { c: function() { console.log(object.b); }, d: 2 }, b: 1 } }]}]}]}]}]}])[0].a[0].b[0].c[0].d[0].e[0].fac();
我喜歡Oriol的回答。 :-)
使用閉包的另一種選擇。
([{a:[{b:[{c:[{d:[{e:[{f: // deeply nested (function (){ var object = { a: { c: function() { console.log(object.b); }, d: 2 }, b: 1 } return object; })() }]}]}]}]}]}])[0].a[0].b[0].c[0].d[0].e[0].fac();
或者,如果可以的話,可以將對象創建移動到單獨的函數中(可以命名該函數)。
function createHierarchy(){ return ([{a:[{b:[{c:[{d:[{e:[{f:createObject()}]}]}]}]}]}]); } function createObject(){ var object = { a: { c: function() { console.log(object.b); }, d: 2 }, b: 1 } return object; } var hierarchy = createHierarchy(); hierarchy[0].a[0].b[0].c[0].d[0].e[0].fac();
從這里開始,使用DI容器只是一個步驟。 :-P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.