JavaScript原型式继承详解
是什么

- 提供了自定义的方法, 这个方法在创建的时候将其原型对象指定成自己想要的原型(浅复制)
- 在es5中其实已经实现了这个函数[[原型对象, 模式#^f0cd6b|使用Object.create()方法]]
模板
function object(o) { // // o是指传入的父类
function F() { } // 创建一个函数对象
F.prototype = o; // 指定当前函数为原型对象, 该函数作为实际子类传回
return new F();// new关键字调用F
}
function object(o) { // // o是指传入的父类
function F() { } // 创建一个函数对象
F.prototype = o; // 指定当前函数为原型对象, 该函数作为实际子类传回
return new F();// new关键字调用F
}
let father = {
name: "jerry",
friends: ["tom"], // 引用类型会在所有子类共享
sayName: function () {
console.log(this.name);
}
}
// 扩展父类
// son1
let son1 = object(father);
console.log(son1);// console.log(Object.getPrototypeOf(son1));
// son2
let son2 = object(father);
console.log(son2);

- 因是
字面量声明, 所以无法用.prototype该原型受保护, 但可以在实例上直接添加,遮盖原型上的内容, 如son1.属性 - 等同于es5
Object.create()
缺点
和原型模式一样, 引用类型仍然会在对象之间共享, 参考[[原型对象, 模式]]