原型
本质就是一个对象。查找对象属性会先查自身的属性,如果没有就查原型上的属性,一直查到没有原型为止。所以属性别藏太深,会影响性能,与作用域链一样,尽量使用局部变量。
let Persion = {
name: 'z',
age: 22,
sex: 'male',
}
let obj = {};
obj.__proto__ = Persion;// obj就能够使用原型上的对象属性
new的过程
let obj = new Persion();
1.先用要new的对象的原型创建一个空的对象,得到对象的原型链属性
let obj = {};
obj.__proto__ = Persion.prototype;
// 或者
let obj = Object.creat(Persion.prototype);
2.把要new的对象的this指向指区新的空对象,得到对象的属性
Persion.call(obj); // 会把Persion中this的对象赋值到obj中,行成了对Persion对象的复制