zoukankan      html  css  js  c++  java
  • prototype和__proto__区别

    prototype和__proto__分别是显式原型和隐式原型,直接上代码吧:

    function person(){
        this.age = 12;
    }
    person.prototype; //Object
    let person1 = new person();
    person1.__proto__; // Object
    person1.__proto__ === person.prototype; //true

    可以看到显式原型和隐式原型是同一个对象~~甚至,如果你操作person1.__proto__等价于操作person.prototype

    ps:网上查资料的时候同时查到,关于Object.create的问题

    function person(){
        this.age = 12;
    }
    let person1 = new person();
    let person2 = Object.create(person1);
    let person3 = new person();
    person1.__proto__ === person2.__proto__; //false
    person1.__proto__ === person3.__proto__; //true

    其实es5对象的原型,都是一个它“继承”的对象,es5实现继承的方法之一就是靠create了,当然更多的方法是直接把构造函数的prototype指向一个要继承的对象。

    person2.__proto__ === person1 //true

    person2就是继承自person1,同样操作person2.__proto__等同于直接操作person1。

  • 相关阅读:
    2017寒假练习赛总结(实时更新)
    NOIP
    挖坑--总结
    BZOJ3709: [PA2014]Bohater
    BZOJ3714: [PA2014]Kuglarz
    BZOJ2276: [Poi2011]Temperature
    VIJOS P1543极值问题
    BZOJ2749: [HAOI2012]外星人
    BZOJ2173: 整数的lqp拆分
    BZOJ1100: [POI2007]对称轴osi
  • 原文地址:https://www.cnblogs.com/amiezhang/p/7859943.html
Copyright © 2011-2022 走看看