给出以下对象:
Parent = (function() {
function Parent(child) {
this.child = child;
}
return Parent;
})();
Child = (function() {
function Child(name, parent) {
this.name = name;
this.parent = parent;
}
return Child;
})();
有没有办法在一个语句中创建父和子? (孩子对父母有适当的引用)
有点像这样:
var parent = new Parent(new Child("john", thisThatPointsToTheNewParent));
这只是为了展示我所追求的目标。我知道我可以分别创建孩子和父母,然后更新孩子的参考,但在我的情况下,如果我可以一次性完成它将更容易。有办法吗?
答案 0 :(得分:0)
这是可能的,但是你最终会得到循环引用,因为Child引用了Parent和Parent引用了Child。这是实现您所寻找的单线程的一种方法:
var Parent = function (name, referenceToChild) {
function Parent(name, child) {
this.name = name;
this.child = child;
child.parent = this;
return this;
}
return new Parent(name, referenceToChild);
};
var Child = function (name) {
function Child(name) {
this.name = name;
this.parent = parent;
return this;
};
return new Child(name);
};
var parent = new Parent("Tom", new Child("john"));
结束于:
{ // Parent
name: "Tom",
child: { // Child
name: "john",
parent: { // Parent
name: "Tom",
child: { // Child
name: "john",
parent: { // Parent
....