gpt4 book ai didi

javascript 模式,父子 sibling 层

转载 作者:行者123 更新时间:2023-11-30 18:27:27 31 4
gpt4 key购买 nike

我想创建一个函数来创建彼此具有分层关系的对象。因此,每个层对象都拥有自己的一组子层对象,并与其所有兄弟对象共享一个父对象。我不熟悉任何模式,但我想应该有一个模式可以涵盖这种情况。

//constructor
var Tier = function(parent){
if(parent===undefined)Tier.prototype.Parent = null;
else if(parent.constructor===Tier)Tier.prototype.Parent = parent;
else return //an error code;
//each tiered object should contain it's own set of children tiers
this.Children = [];
//...
//...additional properties...
//...
this.addChild = function(){
this.Children.Push(new Tier(this));
};
}

Tier.prototype.Parent; //I want this to be shared with all other tier objects on the same tier BUT this will share it between all tier objects regaurdless of what tier the object is on :(
Tier.prototype.Siblings; //should point to the parents child array to save on memory

是否可以创建这种对象,其中每个层对象都包含自己的子对象并与其兄弟对象共享一个父对象,但不同的层共享正确的父对象。我相信如果我在添加一个新 child 时使用类似上面的内容,它将使 Tier.prototype.Parent 成为该 child 的 parent ,但对于所有对象来说这不是正确的行为。我不确定如何解决这个问题。

非常感谢任何帮助。

最佳答案

我不知道我是否做对了,但是试试这个:

// class Tier
function Tier(parentT) {
var Parent;

if((typeof parentT) == undefined) {
Parent = null;
} else if(parentT instanceof Tier) {
Parent = parentT;

parentT.addChildren(this);
} else {
Parent = null;
}

var Children = []; // private; if you want it public you can use this.Children

this.addChildren = function(newChild) {
Children.push(newChild);
};
this.getParent = function() {
return Parent;
};
this.getChildren = function() {
return Children;
};
}

我对你的问题有点困惑,所以我的回答可能有问题。

就像现在一样,可以有一个没有父级的 Tier。 (无参数)(var newTier = new Tier(););

如果您使用参数创建新 Tier,它将被添加到父节点中的子节点 (var parentTier = new Tier(); var child = new Tier(parentTier);)。

关于javascript 模式,父子 sibling 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10486125/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com