原理:
通过构造一个空对象、并设置原型链对象、然后返回出去进行扩展
代码理解
function object(o) {
function F() {}
F.prototype = o
return new F()
}
let user = {
name: "z",
age: 18,
hobby:['找小姐姐','找富婆']
}
let user1 = object(user);
console.log(user1)
user1.hobby.push('找美女')
let user2 = object(user);
console.log(user.hobby) // hobby: (3) ['找小姐姐', '找富婆', '找美女']
缺点
- 某个实例去改变原型会导致所有实例的原型都发送改变
- 无法传递参数