1. 寄生式继承:类似于 原型式继承,实际上就是 原型式继承 + 工厂模式,直接上代码:
function object(o) { function F() {} F.prototype = o; return new F(); }
原型式继承 创建对象,用于被所有实例对象所共享,之后使用 工厂模式 给每个对象添加自身独有的属性:
function createAnother(original){ let clone = object(original); // 通过调用函数创建一个新对象 clone.sayHi = function() { // 以某种方式增强这个对象 console.log("hi"); }; return clone; // 返回这个对象 }
let person = { name: "Nicholas", friends: ["Shelby", "Court", "Van"] }; let anotherPerson = createAnother(person); anotherPerson.sayHi(); // "hi"
个人感觉就是 原型式继承 给对象添加自身独有属性的操作部分挪到了一个函数内部,类似于 工厂模式,其他和 原型式继承 并无差异.