1.原型链特点
每一个实例对象都有自己的原型, 而原型也是对象,也会有自己的原型,此次类推形成链式结构。称之为原型链。(原型链的终点是null)
2.对象访问原型链规则 : 就近原则
对象先访问自己的,自己没有就找原型的,原型没有就找原型的原型,一直到原型链终点null.如果还找不到, 属性则获取undefined, 方法则会报错
构造函数
function Person(name, age) {
this.name = name
this.age = age
}
原型对象 : 存储具有共同特征的数据
Person.prototype.type = '麻雀'
Person.prototype.country = '中国'
Person.prototype.eat = function () {
console.log(this.name + '看电影')
}
实例对象
let p1 = new Person('张三', 21)
let p2 = new Person('李四', 25)
console.log(p1)
我们要如何查看p1的原型?
console.log(p1.__proto__.constructor)//Person
console.log(Person.prototype === p1.__proto__) //true
查看p1的原型的原型
console.log(p1.__proto__.__proto__.constructor) //Object
console.log(Object.prototype === p1.__proto__.__proto__) //true
查看p1的原型的原型的原型
console.log(p1.__proto__.__proto__.__proto__) //null