具有多个层的Javascript继承:A->;B->;C、 在C中使用A中的函数
在javascript中,我希望实现以下目标: A类(数组)->B类(EntityContainer)->C类(EntityList) 代码:具有多个层的Javascript继承:A->;B->;C、 在C中使用A中的函数,javascript,inheritance,virtual-inheritance,Javascript,Inheritance,Virtual Inheritance,在javascript中,我希望实现以下目标: A类(数组)->B类(EntityContainer)->C类(EntityList) 代码: function EntityContainer() { ... } EntityContainer.prototype = new Array; EntityContainer.prototype.constructor = EntityContainer; EntityContainer.prototype.parent = Array.p
function EntityContainer() {
...
}
EntityContainer.prototype = new Array;
EntityContainer.prototype.constructor = EntityContainer;
EntityContainer.prototype.parent = Array.prototype
function EntityList() {
...
}
EntityList.prototype = new EntityContainer;
EntityList.prototype.constructor = EntityList;
EntityList.prototype.parent = EntityContainer.prototype
当然,继承内容可以封装在“inheritsFrom”函数中
在迭代所有元素(使用this.length)时,这是在EntityList中调用“this[I]”的正确方法吗
有什么你能做得更好的吗
谢谢大家 您希望执行所述操作的唯一原因是使用
instanceof
运算符进行类型检查。如果不需要,最好使用组合,并使用数组对象作为实例变量。[]
访问器可以忽略不计,可以用get()
替换,但是基本上我不想用自己的方法(比如contains()等)扩展javascript标准数组对象。这就是我选择继承的原因……这取决于你的目标平台,JS1.6(ECMA5th)已经非常普遍,例如a.contains
很容易使用。如果您的目标平台没有这些方法,我建议同时使用垫片/多填料。