javascript - 一个关于javascript中Array继承的问题

标签 javascript arrays inheritance

function ClassA()  
{  
    this.a=[];
    this.aa=100;  
}  


function ClassB()  
{  
    this.b=function(){return "classbb"};  
}  
ClassB.prototype=new ClassA();  
Array.prototype= new ClassB();  
var array1= new Array();
alert(array1.b());

为什么Array不能继承ClassA和ClassB?谢谢。

最佳答案

这并不是让 Array.prototype 从对象继承的方法。它会覆盖 Array.prototype ,这显然是不允许的。

但是,您可以使用 ClassA/ClassB 的属性/方法扩展 Array 的原型(prototype),如下所示:

function ClassA() {  
  this.a=[];
  this.aa=100;  
}  

function ClassB() {  
  this.b=function(){return "classbb"};  
}

ClassB.prototype = new ClassA; 

var instB = new ClassB;
for (var l in instB){
    Array.prototype[l] = instB[l];
}

var array1 = [];
alert(array1.aa);

您还可以:

Array.prototype.classb = new ClassB;
var array1 = [];
alert(array1.classb.aa);

关于javascript - 一个关于javascript中Array继承的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5429583/

相关文章:

javascript - TypeError : _This. Prop 未定义

javascript - 渲染子域的 ExpressJS 问题

javascript - 替换数组中的一个字符串

继承表单时不显示 C# 设计器

python - 如果子类中缺少 __init__() 会发生什么?

c++ - 为什么此代码会导致访问冲突?

javascript - 重新计算/回流绝对定位元素网格的有效方法

PHP 数组中的空键

c++ - 将数组传递给函数并返回指针

javascript - getElementByID 不会将值传递给变量