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
)构造函数吗?
答案 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('');
};