2017-02-14 87 views
0

我有一個對象「父」,它有一個setter/getter方法「a」,並且此對象也有一個對象數組「我們稱之爲」數組「,用Object Constructor來創建,我認爲用」數組「內的對象我想訪問方法a。從對象數組中的一個對象訪問父集/ get方法

我把一些代碼更好undestanding:

function parent() 
{ 
    this.a; //This is a setter/getter method 
    this.array=[]; // array of objects 
    this.array.push(new child()); 
} 

function child() 
{ 
    this.aParentMehod; 
} 

b=new parent(); 

什麼,我想要的是b.array[0].aParentMethod回報b.a

順便說一句,我使用的對象構造,因爲我不知道有多少孩子的我將有,但這是一個更好的方法來做同樣的事情,請告訴我。

預先感謝您

編輯:

我已經這樣做achived:

function parent() 
{ 
    this.a; //This is a setter/getter method 
    this.array=[]; // array of objects 
    this.array.push(new child(self)); 
} 

function child(self) 
{ 
    this.parent=self; 
    this.aParentMehod=this.parent.a; 
} 

b=new parent(); 

但是,當我更改父a歡迎使用屬性,孩子porpety這麼想的變化和aParentMehod顯示的是正式的a

+0

我試着回答這個問題,但並不是很清楚,尤其是,因爲給出的代碼顯然是僞代碼... –

+0

是的它是僞代碼導致所有的代碼非常大,這個想法是,我有一個未確定數量的孩子,當我加載一個文件時將被創建,並且所有孩子都有在父母對象 –

回答

0

我想要的是b.array[0].aParentMethod回報b.a

你需要做兩件事情要做到這一點:

  1. 傳遞父對象引用到孩子
  2. 一個getter添加到使用父參考孩子得到a

例如,像這樣(見***評論):

function parent() 
{ 
    this.a; 
    this.array=[]; 
    this.array.push(new child(this));      // *** 
} 

function child(parent)         // *** 
{ 
    this.parent = parent; 
} 
Object.defineProperty(child.prototype, "aParentMethod", { // *** 
    get: function() {          // *** 
     return this.parent.a;        // *** 
    }              // *** 
});              // *** 

b=new parent(); 

雖然這不是理想的結構,理想情況下,你會避免讓孩子參考父母(這幾乎意味着它不能有aParentMethod)。


備註:JavaScript中壓倒性的慣例是像你的構造函數是用大寫字母寫成的。所以ParentChild而不是parentchild。像這樣的慣例可以幫助可讀性。

+0

中訪問setter/getter方法非常感謝。例如,如果我在數組中有10個Childs對象,並且所有這些子對象都需要從父對象訪問setter/getter方法,那麼我需要如何對它進行編碼? 再次感謝你,我開始編碼,所有這些公約/技巧對我來說都非常有用。 –

+0

@david。t_92:你只需重複上面的第一個***行就可以看到所有十個孩子。 –