我有一个对象"父母"有一个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
答案 0 :(得分:0)
我想要的是
b.array[0].aParentMethod
返回b.a
,
你需要做两件事才能实现这一目标:
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中压倒性的惯例是像你这样的构造函数是用大写字母写的。所以Parent
和Child
而不是parent
和child
。像这样的公约有助于提高可读性。