寄生式继承
寄生式继承:原型式继承寄生在封装的函数内部;
创建一个仅用于封装继承与扩展过程的函数;函数内部首先使用原型式继承克隆一个对象;然后对这个对象的属性和方法进行扩展。
代码实例:
// 原型式继承封装函数 function object(o) { // 创建一个临时性的工作函数 function F(){} // 将传入的对象做为这个构造函数的原型 F.prototype = o; // 返回这个临时类型的新实例 return new F(); } // 寄生式继承封装函数 function createAnother(original) { // 使用原型式继承创建一个新对象 var clone = object(original); // 为新对象扩展属性与方法 clone.sayHi = function() { alert('Hi'); }; // 返回对象 return clone; } // 使用寄生式继承封装函数 var person = { name: 'yangfch3', friends: ['aaa', 'bbb'] }; var anotherPerson = createAnother(person); anotherPerson.sayHi();什么情况下使用 寄生式继承
在主要考虑对象,而不是自定义类型和构造函数的情况下
寄生式继承 的缺点:不能做到函数(方法)复用。