【发布时间】:2017-06-24 18:08:18
【问题描述】:
在 Pro Javascript 设计模式一书中,实现继承的方法之一是使用扩展函数。
function extend(subClass, superClass) {
var F = function() {};
F.prototype = superClass.prototype;
subClass.prototype = new F();
subClass.prototype.constructor = subClass;
}
示例用法
function Person(name) {
this.name = name;
}
Person.prototype.getName = function() {
return this.name;
}
function Author(name, books) {
Person.call(this, name);
this.books = books;
}
extend(Author, Person);
那么,为什么不能这样实现相同的功能呢?
function extend(subClass, superClass) {
subClass.prototype.__proto__ = superClass.prototype
}
如果不一样,两种实现有什么区别?
【问题讨论】:
-
__proto__不被 IE developer.mozilla.org/en/docs/Web/JavaScript/Reference/… 支持
标签: javascript inheritance prototype