const Super = function(superProp) {
this.superProp = superProp;
};
// Присваивать prototype объект не нужно.
// Нужно только добавлять данные,
// иначе прототип будет перезаписан на обычный объект,
// у которого нет свойств которые содержит prototype по умолчанию
Super.prototype.superMethod = function() {
console.log("I am Super Class");
};
// Так делать не нужно - Super.prototype = {
// some code
// };
// Super.prototype = { После добавления свойств в prototype, он будет выглядеть примрно так
// constructor: Super, // свойства по умолчанию
// __proto__: Object.prototype, // default
// superMethod: function() {
// // some code
// }
// };
const SubClass = function(subProp) {
Super.apply(this, arguments); // Вызов конструктора супер класса
this.subProp = subProp;
// __proto__ = Super.prototype;
}
SubClass.prototype = Object.create(Super.prototype); // Создаем объект прототипа на основе прототипа супер класса
SubClass.prototype.constructor = SubClass; // Перезаписываем свойство constructor
SubClass.prototype.subMethod = function() {
console.log("I am subClass");
};