原型链有哪些特点?对象访问原型链有什么规则?

100 阅读1分钟

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