原型 prototype 原型链 _proto_
每一个函数都有一个Prototype属性
每一个对象都有_proto_属性
function Animal () {
this.type = '哺乳类'
}
console.log(Animal.prototype) // Animal {}
let animal = new Animal();
console.log(animal._proto_ === Animal.prototype) // true _proto_指向当前类的原型
Animal.prototype.type = '哺乳‘
console.log(animal.type) // 哺乳类
delete animal.type
console.log(animal.type) // 哺乳 实例没有这属性就向类的原型上找
console.log(animal._proto_._proto_ === Object._proto_) // true
animal._proto_.constructor == Animal 类的原型上有个constructor属性指向类
console.log(Object.prototype._proto_) 顶层的对象
特殊的 Function Object (可以充当对象 也可以充当函数)
Function._proto_ === Function.prototype
Object._proto_ === Function.prototype
判断实例上有没有属性 对象.hasOwnProperty('type')
判断属性在不在类的原型上 console.log(’type‘ in animal) // in 既可以判断在不在实例也可以判断在不在类原型上