原型
1.prototype
每个函数都有一个prototype属性,被称为显示原型
function Person(age){
this.age = age
}
Person.prototype.name="小花"
var person1 = new Person()
var person2 = new Person()
console.log(person1) // 小花
console.log(person2) // 小花
上述例子中,函数的prototype指向了一个对象,这个对象就是调用构造函数时创建的实例的原型,也就是person1和person2
2._ _proto_ _
每个实例对象都会有_ _proto_ _
属性,其被称为隐式原型
每一个实例对象的隐式原型_ _proto_ _
属性指向自身构造函数的显式原型prototype
function Person(){
}
var person = new Person()
console.log(person._proto_ === Person.prototype) // true
3. constructor
每个prototype原型都有一个constructor属性,指向它关联的构造函数。
function Person(){
}
console.log(Person===Person.prototype.constructor) // true
原型链
获取对象属性时,如果对象本身没有这个属性,那就会去他的原型_ _proto_ _
上去找,如果还查不到,就去找原型的原型,一直找到最顶层(Object.prototype)为止。Object.prototype对象也有_ _proto_ _
属性值为null。