Тривиальное Наследование с JavaScript - PullRequest
0 голосов
/ 08 октября 2011
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 Ответ

2 голосов
/ 08 октября 2011

Поскольку 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('');
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...