构造函数的原型属性prototype

js规定,所有的函数自带一个属性,prototype,而且是一个对象(构造函数),通过构造函数实例化的对象可以直接通过原型的属性和方法访问
什么意思呢,比如
fn.prototype.name = "zs",
所有通过实例化的对象,var cc = new fn();
console.log(cc.name) = "zs";同理,可以存储行为函数
所以之前的所有构造函数里的共有函数可以存放在原型对象中,省去多个对象的创建

__proto__:所有构造函数实例化的对象都会有一个属性,(上面那个是所有构造函数都会有的属性)而__proto__指向了构造函数的prototype属性。

constructor:所有的原型对象里面,默认会有一个属性:constructor,指向了当前的构造函数


属性搜索原则
1.先找对象本身的属性,如果有,直接返回
2.如果没有,找对象__proto__里有没有,如果有就返回
3.如果没有,找对象.__proto__.proto__,最终Object.prototype如果没有返回undefined