/**
概念:
prototype
__proto__
constructor
.prototype
.contructor
关系:
p.__proto__ === Product.prototype
Product.prototype 包含 contructor & 定义的prototype
*/
/**
原型链:
通过prototype 链起来, 最顶端 为null 也即是Object.prototype.__proto__
对象属性get/set, 会通过原型链去查找有没有相关属性, 然后进行操作
*/
-
function Product(name, price) {
this.name = name;
this.price = price;
this.working = function() {
console.log(this.name + 'price = ' + this.price );
}
}
Product.prototype.addr = function(addr) {
this.addr = addr
}
let p = new Product('car', 100)
console.log(p);
p.addr('sz')
console.log(p);
console.log(p.constructor); // [Function: Product]
console.log(p.__proto__); //{ addr: f, constructor: f }
console.log(Product.prototype); // { addr: f, constructor: f }
console.log(p.__proto__.constructor);
console.log(Object.prototype);
console.log(Object.prototype.__proto__);