首页  >  问答  >  正文

javascript - 如何理解prototype和__proto__的区别呢?

如何理解prototype和__proto__的区别呢?

漂亮男人漂亮男人2641 天前1063

全部回复(5)我来回复

  • 迷茫

    迷茫2017-06-30 10:01:49

    构造函数访问原型时,通常通过prototype来访问,例如我们往原型上添加方法

    Person.prototype.getName = function() {}

    当new出来的实例访问原型时,在一些支持的浏览器中

    function Person() {}
    
    var p1 = new Person();
    
    p1.__proto__ === Person.prototype   // true

    结论:prototype是作为构造函数去访问原型,而__proto__是作为构造函数去访问原型,而__proto__是作为实例去访问原型。当自身身份不一样,即使一个方法同时调用两者时,访问到的可能是不同的原型。

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-06-30 10:01:49

    每个对象都有__proto__,而prototype只有Function有;

    回复
    0
  • 漂亮男人

    漂亮男人2017-06-30 10:01:49

    也许你也可以看看这些:

    /a/11...

    https://developer.mozilla.org...

    https://developer.mozilla.org...

    回复
    0
  • 某草草

    某草草2017-06-30 10:01:49

    prototype 是构造函数的一个属性,__proto__ 是实例的一个属性。使用构造函数生成的实例的 __proto__ 属性会指向构造函数 prototype 属性所指向的对象。

    嗯,就是这样。

    回复
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-30 10:01:49

    从作用上来说:
    prototype 确定了当利用构造器或字面量形式定义对象时 proto 的默认值

    proto 是 js 引擎原型链搜索的依据

    所以重点在于当你要更改原型链的搜索方式时,可以通过更改构造器 prototype 来改变后续所有实例化对象的原型链查找方式,利用 proto 来修改单个对象的原型链查找.

    回复
    0
  • 取消回复