Вот как это делается:
function Parent( a ) {
this.a = a;
}
function Child( a, b ) {
Parent.call( this, a ); // this is crucial
this.b = b;
}
Child.prototype = Object.create( Parent.prototype );
Child.prototype.constructor = Child;
Демонстрация в реальном времени: http://jsfiddle.net/ECCgt/ (анализировать примеры в консоли)
То, как вы это делаете
ChildClass.prototype = new ParentClass();
- это грязный хак, который сломан и его следует избегать.Используйте Object.create
для установки отношений наследования между двумя объектами-прототипами.
Вторая строка
Child.prototype.constructor = Child;
является несколько необязательной.Мы исправляем свойство constructor
, потому что нам пришлось перезаписать Child.prototype
, чтобы настроить наследование.Если вас не волнует свойство constructor
, просто пропустите эту строку.