2013-03-26 70 views
0

考虑以下对象:传递父母和孩子之间的构造

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

尝试单独创建它们的你会看到在您的设计缺陷:

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")); 

与结束。 – Musa 2013-03-26 05:25:43

+0

这看起来像是继承错误的尝试......你想要在这里完全做什么? – elclanrs 2013-03-26 05:25:59

+0

我正在创建一个父数组,用作页面上的数据。我通过连接控制器上的一个字符串“new Parent(...),”来实现。写完这篇评论之后,我认为我可以没有参考,但我仍然想知道是否有可能,以防万一。 – Manuel 2013-03-26 05:42:00

回答

0

这是可能的,但你最终会得到循环引用,因为子引用父和父引用子。这是实现你要找的一行代码的一种方式:

{       // Parent 
name: "Tom", 
child: {     // Child 
    name: "john", 
    parent: {    // Parent 
     name: "Tom", 
     child: {   // Child 
      name: "john", 
      parent: {  // Parent 
       ....