2017-02-14 44 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:你只需重复上面的第一个***行就可以看到所有十个孩子。 –