簡體   English   中英

JavaScript訪問父元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM