2016-03-15 42 views
0

有人可以解释或告诉我如何合并两个JavaScript对象,也许我可以称之为小部件,然后一起工作。JavaScript对象依赖于另一个对象

可以说我有一个大对象(窗口),其代表一个浏览器窗口和一个较小的对象(工具栏),其具有各种按钮的工具栏表示。单独操作(添加,删除,更改属性等)我没有问题。但我如何让他们一起工作? 例如,如果我想从窗口以这种方式删除工具栏 window.Toolbar.Remove()

Remove()功能toolbar对象的一部分,并会从DOM删除工具栏它的自我,但我怎么删除它的参考从窗口对象并将其设置为null。我应该摧毁这toolbar一些如何?

如果我销毁主要父对象window,我应该如何销毁所有像toolbar这样的小对象?

任何指针高度赞赏。

+0

“我没有问题,但我如何让他们一起工作?“你需要更具体的 –

+0

“我如何从窗口对象中删除它的引用并将其设置为空,我应该如何销毁这个工具栏?只要你没有做过像'window.toolbar = toolbar'这样的东西,或者没有在你的代码中的其他地方引用'toolbar','toolbar'对象就会自动被垃圾收集。即使你做了像'window.toolbar = toolbar'这样的操作,只需要执行'window.toolbar = undefined'或'delete window.toolbar'就可以删除对'toolbar'的任何引用,并且它会被再次垃圾回收。 –

回答

1

我看到这里有两个可能的选择:

1)让孩子知道小部件父母。

你可以有这样的事情(伪代码):

window.addChild(name, WigdetClass) { 
    this[name] = new WigdetClass(this); 
} 

// add toolbar 
window.addChild('toolbar', Toolbar); 

// Toolbar constructor accepts `parent` as parameter 
Toolbar(parent) { 
    this.parent = parent; 
} 

Toolbar.prototype.Remove() { 
    // remove self from the page 
    ... 
    // set parent reference to null 
    parent.toolbar = null; 
} 

2),或者你可以将“删除”父对象:

Window.prototype.RemoveChild(child) { 
    // remove child from the document 
    ... 
    var propertyName = this.findChildName(child); // 'toolbar' 
    this[propertyName] = null; 
} 
+0

第二个选项适合我很好。非常感谢 ;) –

相关问题