Проблема в том, что ... при выдаче строки:
sub2.prototype = core.prototype;
Вы используете один и тот же прототип на sub2
как core
, поэтому при вызове .output()
из ЛЮБОГО классов функция на core.prototype.output
является версией sub2
это последний определенный. Помните, что назначение объектов происходит по ссылке.
Чтобы скопировать объект, который вы обычно видите:
sub2.prototype = new core();
sub2.prototype.core = core;
Или - если вы хотите избежать вызова конструктора, вы можете использовать jQuery $.extend(sub1.prototype, core.prototype);
, чтобы скопировать основной прототип. Если у вас нет jQuery, это примерно так же:
sub2.prototype = {};
for (var method in core.prototype) sub2.prototype[method] = core.prototype[method];
sub2.prototype.constructor = core;
sub2.prototype.core = core;