1.原型有哪些?
1.每个函数都有一个prototype属性,被称为显示原型
function aa(){
}
console.log(aa.prototype) //
2.每个实例对象都会有_ _proto_ _
属性,其被称为隐式原型
let a = {}
console.log(a)
3.每一个实例对象的隐式原型_ _proto_ _
属性指向自身构造函数的显式原型prototype
function Persion(name,age){
this.name = name
this.age = age
}
let one = new Persion('小花',18)
let tow = new Persion('张三',18)
// console.log(one)
// console.log(tow)
console.log(Persion.prototype == one.__proto__)
console.log( one.__proto__)
4.每个prototype原型都有一个constructor属性,指向它关联的构造函数。
function Persion(name,age){
this.name = name
this.age = age
}
let one = new Persion('小花',18)
let tow = new Persion('张三',18)
// console.log(one)
// console.log(tow)
console.log(Persion.prototype == one.__proto__)
console.log( one.__proto__)
console.log(one.constructor === Persion)
原型链
获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__
上去找,如果还查不到,就去找原型的原型,一直找到最顶层(Object.prototype
)为止。Object.prototype对象也有__proto__属性值为null。