Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有多个层的Javascript继承:A->;B->;C、 在C中使用A中的函数_Javascript_Inheritance_Virtual Inheritance - Fatal编程技术网

具有多个层的Javascript继承:A->;B->;C、 在C中使用A中的函数

具有多个层的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

在javascript中,我希望实现以下目标:

A类(数组)->B类(EntityContainer)->C类(EntityList)

代码:

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
很容易使用。如果您的目标平台没有这些方法,我建议同时使用垫片/多填料。