美文网首页
继承及原型链

继承及原型链

作者: 天然呆的老李头 | 来源:发表于2019-02-18 16:42 被阅读1次

    当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(object )都有一个私有属性(称之为proto)指向它的原型对象(prototype)。该原型对象也有一个自己的原型对象(proto) ,层层向上直到一个对象的原型对象为 null。根据定义,null 没有原型,并作为这个原型链中的最后一个环节。

    1. proto和prototype

    这是容易混淆的两个属性。proto指向当前对象的原型,prototype是函数才具有的属性,默认情况下,new 一个函数创建出的对象,其原型都指向这个函数的prototype属性。

    2.一般情况

    var obj = {};
    Object.getPrototypeOf(obj) === Object.prototype;   // true
    obj.__proto__  === Object.prototype;            // true
    

    3.特殊情况

    'abc'.__proto__ === String.prototype;   // true 
    new String('abc').__proto__ === String.prototype;  //true
    
    new Number(1).__proto__  ==== Number.prototype;   // true
    
    [1,2,3].__proto__ === Array.prototype;            // true
    new Array(1,2,3).__proto__ === Array.prototype;   // true
    
    ({}).__proto__ === Object.prototype;               // true 
    new Object({}).__proto__ === Object.prototype;     // true
    
    var f = function() {};
    f.__proto__ === Function.prototype;            // true
    var f = new Function('{}');
    f.__proto__ === Function.prototype;            // true
    
    var a = Object.create(null); 
    a.__proto__;               // undefined
    

    对于JavaScript中的内置对象,如String、Number、Array、Object、Function等,因为他们是native代码实现的,他们的原型打印出来都是ƒ () { [native code] }。

    继承与原型链
    白话原型和原型链

    相关文章

      网友评论

          本文标题:继承及原型链

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