经典模式四-共享原型(Classical Pattern #4—Share the Prototype)
不像前面的经典继承模式需要调用两次parent构造函数,下面这个模式根本不需要调用parent构造函数。
经验法则复用的成员应该添加到原型(prototype)而不是this。因此为了继承这个目的,任何值得继承的东西都应该在原型中。
那么你可以设置child的原型和parent的原型一样:
function inherit(C, P) {
C.prototype = P.prototype;
}
这样会得到一个短且快的原型链查找,因为所有的对象实际上共享一样的原型。但是这也是一个弊端,因为如果一个child或者grandchild修改了原型,它将会影响所有的parents和grandparents。
就像图6-7所示,child和parent对象共享相同的原型并且访问相同的say()方法。然而,children对象不会继承name属性。