【问题标题】:array inheritance question in javascriptjavascript中的数组继承问题
【发布时间】:2026-01-31 17:55:01
【问题描述】:
function ClassA() { this.a=[]; this.aa=100; }
function ClassB() {  }

ClassB.prototype = new ClassA;
ClassB.prototype.b=function(){return "classbb"};

for (var l in ClassB.prototype){

    Array.prototype[l] = ClassB.prototype[l]; 
}
var array1 = [];
alert(array1.b()); 

可以

Array.prototype[l] = ClassB.prototype[l]

替换为

Array.prototype[l] = ClassB[l]

?有人可以帮助我吗?谢谢。

【问题讨论】:

    标签: javascript arrays inheritance


    【解决方案1】:

    不,你不能。ClassB 没有属性 bClassB.prototype 有。
    如果你这样做,alert(array1.b()); array1.b 将是 undefined

    【讨论】:

    • @wong2。如果我想定义ClassB.b,我应该怎么做?谢谢
    • @jsnewman 我不确定我是否理解你想要做什么......你可以通过function ClassB() {}; ClassB.b = function(){return "classbb"};定义ClassB.b
    • @wong2:你能告诉我ClassB.b和ClassB.prototype.b的区别吗?非常感谢你。 ClassB.property 是什么意思?
    • @jsnewman 如果您将ClassB.prototype.b 定义为某个值,那么由new ClassB();(如var class_b = new ClassB();)创建的每个实例都会有一个属性b,但如果您定义ClassB.b,那么b只是ClassB的一个属性(谁是函数,也是一个对象)。清楚吗?
    • @wong2: function ClassB() { this.b = function(){return "classbb"}; } ClassB.b = function(){return "classBB"}; this.b 和 ClassB.b 有什么区别?