原型
1.普通对象
每个对象都有一个__proto__属性,该属性指向对象的原型属性
const obj = { name: '张三' }
console.log(obj, obj.__proto__);
console.log(Object, Object.prototype);
我们可以得出:obj.proto === Object.prototype
console.log(obj.__proto__ === Object.prototype); // true
2.依赖构造函数产生的实例化对象
- 每个构造函数都有一个prototype属性,该属性指向原型对象,原型对象用来给各个实例化对象共享属性和方法。
- 每个实例化对象都有一个__proto__属性,该属性也指向原型对象。
- 每个原型对象都有一个constructor属性,指向构造函数本身
// 构造函数的原型对象的constructor指向构造函数本身
console.log(Person===Person.prototype.constructor) // true
// 实例化对象的__proto__指向构造函数的原型对象
console.log(per.__proto__ == Person.prototype) // true
// 同1,只是要经过2转化下
console.log(per.__proto__.constructor == Person) // true