【发布时间】:2017-06-24 01:01:03
【问题描述】:
我正在寻找在对象实例中进行更新的最佳方式,例如本例中的 myParentObjects 的 name 属性。我理解实现这一点的唯一方法是将父对象的引用作为参数传递给子对象实例作为构造函数中的new myChildObj(this,name),或myChildObj 实例的方法,如myChildObj.updateParentProperty(name)。
我无法想象一个嵌套在 4-5 层以下的子对象,并且必须更新其父对象的属性并传递 (parent1,parent2,parent3,etc) 它的参数,这将是一场管理噩梦!必须有更好的方法来更新父属性!
function myParentObj(){
this.name = 'jordan'
this.names = ['jordan','danny','cassie'];
this.init=()=>{
this.names.forEach((name)=>{
var childObj = new myChildObj(this,name);
childObj.updateParentProperty();
})
}
}
function myChildObj(parentObj,name){
this.parent = parentObj;
this.name = name;
this.updateParentProperty=()=>{
this.parent.name = this.name;
};
}
function init(){
var parentObj = new myParentObj();
parentObj.init();
}
document.addEventListener('DOMContentLoaded',init);
问题:更新父对象参数的最佳方法是什么?
【问题讨论】:
-
"有没有办法将
first实例传递给second实例,以便它可以操纵第一个属性,而不是new mySecondObj(first)" --这正是你正在做的事情 -
还有其他方法,即使没有将第一个实例传递给您的第二个实例(例如观察者模式或事件总线)。
-
@cyrix huh 我得去看看,你有任何示例或链接可以作为答案发布
-
为什么需要这样做?这感觉有点像 xy 问题。一个“孩子”可能不应该以你展示的方式更新一个“父母”。也许您想传入一个回调并让“父母”决定做什么?
-
@EamonnMcEvoy 这是一个基本的例子来证明这一点,我永远不会使用这样的东西。
标签: javascript object inheritance