Как в JavaScript расширить базовый класс, если нет конструктора, подходящего для использования при назначении прототипа нового класса?Решение ...
- Должен пройти
instanceof
тест. - Не должен изменять существующий конструктор.
- Должен вызвать супер-конструктор.
- Долженне включает промежуточный класс, который я пишу.
- Не должен зависеть от стороннего кода, такого как jQuery.
- Может включать вспомогательную функцию, которую вы предоставляете.
Здесьэто то, что я пробовал.
function Person(name) { // Immutable base class.
if (typeof name != "string" || name == "") {
throw new Error("A person must have a valid name.");
}
this.getName = function() {
return name;
}
}
function Artist(name) { // My extending class.
Person.call(this, name); // Call super constructor.
}
Artist.prototype = new Person(); // Express inheritance without parameters.
var tom = new Artist("Tom");
console.info(tom instanceof Person); // Must print true.
console.info(tom.getName()); // Must print Tom.
Мое решение не удалось, потому что выброшено исключение