美文网首页
JavaScript 继承与原型链学习笔记

JavaScript 继承与原型链学习笔记

作者: 高冷的咸鱼 | 来源:发表于2020-03-06 03:21 被阅读0次
    
    var a = {};
    var b = Object.create(a);
    var c = Object.craete(b);
    // 1.1 如果一个对象是由 Object.create生成 那么它就继承自这个对象
    c.__proto__ === b;
    b.__proto__ === a;
    // 1.2 a是直接从Object而来 所以a是Object的实例 所以 a 继承自Object的原型
    a.__proto__ === Object.prototype;
    
    function Person () {}
    
    var person = new Person();
    
    // 1.3 如果一个对象是由构造函数生成 那么它就继承这个构造函数的原型
    person.__proto__ === Person.prototype;
    
    // 2.1 任一函数都是Function的实例对象 根据 1.3 则有任一函数都继承自Function的原型
    Person.__proto__ === Function.prototype
    // 2.2 Object也是一个函数 那么它也遵循 2.1
    Object.__proto__ === Function.prototype
    // 2.3 即使是Function自己 也是自己的实例 同样遵循2.1
    Function.__proto__ === Function.prototype
    
    // 3. 函数具有 prototype 属性来表示这个函数的原型 prototype是一个实例对象 除了__proto__外还有一个construcor
    // 3.2 constructor 就是其自身
    Person.prototype.constructor === Person
    Object.prototype.constructor === Object
    Function.prototype.constructor === Function
    // 3.3 几乎任一函数的原型也是一个对象 这个对象是Object的实例对象
    Person.prototype.__proto__ === Object.prototype
    Function.prototype.__proto__ === Object.prototype
    // 3.4 Object的原型不是Object的实例对象 而是 null
    Object.prototype.__proto__ === null
    

    相关文章

      网友评论

          本文标题:JavaScript 继承与原型链学习笔记

          本文链接:https://www.haomeiwen.com/subject/epycactx.html