原型、原型链的理解

64 阅读1分钟

原型的理解:

    1.万物皆对象,每一个对象都有对应的__proto__属性,指向创造该对象的构造函数的原型对象prototype
        
        function A() {}
        var a = new A()
        a.__proto__ === A.prototype
        
    2.js有两个顶级函数FunctionObject
        所有的函数都是由Function创造
        所有的对象都是由Object创造

        a).所有的函数都是由Function创造,所以A的属性__proto__指向的是Function的原型对象prototype
        A.__proto__ === Function.prototype
        
        b).所有的函数都是由Function创造,包括其自身
        Function.__proto__ === Function.prototype

        c).所有的函数都是由Function创造,Object也是顶级函数,也是函数
        Object.__proto__ === Function.prototype

        d).所有对象都算是由Object创造,所以A的原型对象prototype上的对象属性__proto__指向的是Object的prototype
        A.prototype.__proto__ === Object.prototype

        e).Object.prototype也是对象,被谁创建的呢,null
        Object.prototype.__proto__ === null
        
        

原型链的理解

是一种访问机制

1.在访问对象的某一成员时,会先在该对象中寻找是否存在
2.如果不存在,就去该对象所在构造函数的原型对象prototype中寻找
3.如果还没有找到,就去该原型对象的原型上找
4.直到Object上的原型对象的原型 是null为止