使用JavaScript进行简单的继承

时间:2011-10-08 15:48:06

标签: javascript inheritance constructor superclass

function StringStream() {}
StringStream.prototype = new Array();
StringStream.prototype.toString = function(){ return this.join(''); };

调用new StringStream(1,2,3)会得到一个空数组

x = new StringStream(1,2,3)

给出

StringStream[0]
__proto__: Array[0]

有人可以解释为什么没有调用超类'(Array)构造函数吗?

1 个答案:

答案 0 :(得分:2)

仅仅因为StringStream.prototype是一个数组,StringStream构造函数也不会被Array替换。

您应该自己实现:http://jsfiddle.net/gBrtf/

function StringStream() {
    // push arguments as elements to this instance
    Array.prototype.push.apply(this, arguments);
}

StringStream.prototype = new Array;

StringStream.prototype.toString = function(){
    return this.join('');
};