Javascript 从对象数组中的一个对象访问父集合/获取方法

Javascript 从对象数组中的一个对象访问父集合/获取方法,javascript,json,Javascript,Json,我有一个对象“parent”,它有一个setter/getter方法“a”,这个对象还有一个用对象构造函数创建的对象数组“让我们称之为数组”,我的想法是,如果对象在“数组”中,我想访问方法a 我写了一些代码,以便更好地理解: function parent() { this.a; //This is a setter/getter method this.array=[]; // array of objects this.array.push(new child()); }

我有一个对象“parent”,它有一个setter/getter方法“a”,这个对象还有一个用对象构造函数创建的对象数组“让我们称之为数组”,我的想法是,如果对象在“数组”中,我想访问方法a

我写了一些代码,以便更好地理解:

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

顺便说一句,我正在使用对象构造函数,因为我不知道我会有多少个孩子,但这是一个更好的方法,请告诉我

先谢谢你

编辑:

通过这样做,我取得了以下成就:

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
属性时,子级属性不会更改,并且
aParentMehod
显示
a

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

要做到这一点,您需要做两件事:

  • 将父对象引用传递给子对象
  • 向使用父引用获取
    a
  • 例如,类似的内容(请参见
    ***
    注释):

    不过,这不是一个理想的结构;理想情况下,您应该避免让子对象引用父对象(这几乎意味着它不能使用
    aParentMethod



    旁注:JavaScript中压倒性的惯例是,像您这样的构造函数是用大写字母开头的。因此
    Parent
    Child
    而不是
    Parent
    Child
    。像这样的约定有助于可读性。

    我试图回答这个问题,但不太清楚,尤其是因为给出的代码显然是伪代码……是的,它是伪代码,因为所有代码都非常大,我的想法是,加载文件时将创建一个未确定数量的孩子,所有这些孩子都必须访问parents对象中的setter/getter方法,非常感谢。例如,如果我在数组中有10个child对象,所有这些child都需要从父对象访问setter/getter方法,那么我必须如何编写代码?再次感谢您,我开始编写代码,所有这些约定/技巧对我都非常有用。@david.t_92:您只需为所有十个孩子重复上面的第一行
    ***
    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();