function extend(child, parent) {
var emptyCtor = function() {};
emptyCtor.prototype = parent.prototype;
child.prototype.constructor = child;
child._super = parent.prototype; // fix
return child;
};
var ParentClass = function() {
this.a = 1;
};
var ChildClass = extend(function() {
ChildClass._super.constructor.call(this) // call parent
this.b = 2; // add new property
}, ParentClass);
var myObject = new ChildClass;
document.body.innerHTML = myObject.a + "<br>"; // 1
document.body.innerHTML += myObject.b + "<br>"; // 2
ES6
// наследование классов
// JavaScript был и остаётся
// прототипно-ориентированным языком
class ParentClass {
constructor() { // --------------
this.a = 1 // |
}; // |
} // |
// |
class ChildClass extends ParentClass { // |
constructor() { // |
super(); // отнаследовали конструктор <----
this.b = 2; // add new property
};
}
var myObject = new ChildClass();
document.body.innerHTML = myObject.a + "<br>";
document.body.innerHTML += myObject.b + "<br>";