在JavaScript中,当分配新类的原型时没有适合使用的构造函数时,如何扩展基类?解决方案...
instanceof
测试。这是我尝试过的。
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.
我的解决方案失败,因为引发了异常
答案 0 :(得分:4)
您做的继承错误,应该是:
Artist.prototype = Object.create(Person.prototype);
这行得通,您的所有测试都通过了。
有用的读物:Inheritance in JavaScript