有没有其他方法可以覆盖原型函数,同时仍然调用基函数并继承其构造函数而不是我在下面做的事情?
function MyFoo(name) {
this.name = name;
}
MyFoo.prototype.sayName = function() {
alert("Hi, my name is " + this.name + ".");
}
MyBar.constructor = MyFoo;
MyBar.prototype = new MyFoo();
function MyBar(name) {
MyFoo.apply(this, arguments);
};
MyBar.prototype.sayName = function() {
MyFoo.prototype.sayName.call(this);
alert("It's nice to meet you!");
}
var fooJim = new MyFoo("Jim");
var barJake = new MyBar("Jake");
fooJim .sayName();
barJake .sayName();
这很好用,但我很好奇是否有更有效的方法。
答案 0 :(得分:2)
不,你模仿类继承的方法本质上是JavaScript语言允许的极简主义。
如果您想在应用程序中大量使用类继承并希望最大限度地减少冗余代码,您可以:
我也无法帮助建议这本书(希望它不会被视为垃圾邮件):Stoyan Stefanov的“JavaScript Patterns”。它有一个非常好的章节,可以在javascript中模拟类继承的不同技术。