前端相关

JS原型链

2017-09-02  本文已影响10人  DeeJay_Y

JS原型链

回顾一下类,实例,prototype,__proto__的关系

    function People (name,age) {
        this.name = name;
        this.age = age;
    }
    People.prototype = {
        sayName: function () {
          console.log(this.name);
        },
    }
    var p1 = new People('deejay',21);
    p1.sayName();
类,实例,prototype,__proto__

另外有:

    p1.__proto__.constructor === People; // true
    People.prototype.constructor === People; //true
    p1.constructor === People; //true

对于p1.construcror来说,在p1中找不到相应的属性,就回到__proto__中寻找,其实找到的是People.prototype中的constructor,和第2行等价

任何一个对象,只要是一个对象,那么总有一个函数创建了它,这个对象的__proto__属性等于创建它的函数的prototype
比如说People.prototype也是一个对象,也有__proto__属性,其中的constructor指向了Object(),即是Object()创建的对象,其prototype属性等于People.prototype.__proto__.

详细的原型链

原型链

在上图中有几个需要注意的特殊点:

上一篇下一篇

猜你喜欢

热点阅读