构造函数通过原型分配的函数是所有对象共享的(不用构造函数的每个对象的相同的方法开辟不同的内存空间)
sing方法实现共享:(给prototype原型对象里面添加方法)
function Fn() {
}
Fn.prototype.sing = function(){
console.log('我会唱歌')
}
let f1 = new Fn()
let f2 = new Fn()
f1.sing()
f2.sing()
先检查对象身上有没有方法,没有就找_proto_,从它身上去找原型对象有没有该方法。
显式原型属性prototype: 函数创建的时候已经生成,每个函数都有
_prpto_对象原型:对象身上系统自动添加了_proto_指向了我们的构造函数的原型对象
以上两个属于一个