JS设计模式:组合模式

var inheritPrototype = function(Child,Parent) {
    Child.prototype = new Parent();
}
var News = function() {
    this.children = [];
    this.element = null;
}

News.prototype = {
init : function() {
throw new Error('Nothing!');
},add : function() {
throw new Error('Nothing!');
},getElement : function() {
throw new Error('Nothing!');
}
}

var Container = function(id,parent) {
News.call(this);
this.id = id;
this.parent = parent;
this.init();
}

Container.prototype.init = function() {
this.element = document.createElement('ul');
this.element.id = this.id;
this.element.className = 'new-container';
}

Container.prototype.add = function(child) {
this.children.push(child);
this.element.appendChild(child.getElement());
return this;
}

Container.prototype.getElement = function() {
return this.element;
}

Container.prototype.show = function() {
this.parent.appendChild(this.element);
}

部分整体的层次结构

var news1 = new Container('news',document.body);

news1.add(
new Item('normal').add(
new IconNews('','','');
)
).add(
new Item('normal').add(
new IconNews('','');
)
).show();

相关文章

这个问题和curl无法访问https资源是类似的,现在curl可以访问https资源,但是使用pecl安装扩展的时候不行...
在浏览器输入chrome://flags/回车,找到Omnibox UI Hide Steady-State URL Scheme and Trivial Subdoma...
方法一: 我们都知道Ubuntu有一个专门用来安装软件的工具apt,我们可以用它来全自动安装arm-linux-gcc。...
中文的windows下的cmd默认使用GBK的编码,敲代码时,页面使用的是UTF-8(65001),而powershell控制台默认...
提示错误: arm-linux-gcc:Command not found PATH里有/usr/oca/arm/bin,但是make的时候,就是找不到 a...
我在Graph API开发中用的最多的测试工具就是Graph Explore,这个是微软开发的网页版的Graph API的测试工...