资讯专栏INFORMATION COLUMN

JavaScript:__proto__和prototype的关系

Vixb / 760人阅读

摘要:可以通过上述路线图来观察。注意到也是一个对象,所以也有属性,这样就构成了一个原型链,最高到达为止。对于函数而言,它的指向。而这个原型对象本身不等于而是它的属性等于当我们手动改变一个对象的原型时即改变指向,注意。

可以通过上述路线图来观察。

函数和对象,都有一个__proto__属性,指向它们各自的原型prototype。注意到prototype也是一个对象,所以prototype也有__proto__属性,这样就构成了一个原型链,最高到达Object.prototype.__proto__===null为止。

对于函数而言,它的__proto__指向Function.prototype。因为ObjectFunction本身也是函数,所以Function.__proto__、Object.__proto__、Cat.__proto__实际上是完全相同的,它们都指向同一个对象:Function.prototype

因此,如果我们有:Function.prototype.bark=function(){console.log("Wow!")},那么所有函数都可以按照原型链访问到该方法:Cat.bark()。注意不能写成Function.bark=....,否则需要通过:Cat.constructor.bark()来访问(Cat通过原型链在Functionprototype中找到了constructor,而它指向Function,从而可以引用bark

Cat这个自定义函数可知,当函数被编译创建时它就已经有了一个原型对象prototype。而这个原型对象prototype本身不等于Object.prototype,而是它的__proto__属性等于:Cat.prototype.__proto__===Object.prototype

当我们手动改变一个对象的原型时(即改变__proto__指向),注意constructor

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85240.html

相关文章

  • JavaScript原型链以及Object,Function之间关系

    摘要:由于一般所有的原型链最终都会指向顶端的,所以它们都是的。好了现在了,成了所有对象原型链的。 JavaScript里任何东西都是对象,任何一个对象内部都有另一个对象叫__proto__,即原型,它可以包含任何东西让对象继承。当然__proto__本身也是一个对象,它自己也有自己的__proto__,这样一级一级向上,就构成了一个__proto__链,即原型链。当然原型链不会无限向上,它有...

    zacklee 评论0 收藏0
  • JavaScript__proto__prototype关系

    摘要:了解中原型以及原型链只需要记住以下点即可对象都有属性,指向构造函数的构造函数函数都有属性,指向构造函数的原型对象的内置构造函数可知所有的构造函数都继承于甚至包括根构造器及自身。 了解JavaScript中原型以及原型链只需要记住以下2点即可 对象都有__proto__属性,指向构造函数的prototype 构造函数函数都有prototype属性,指向构造函数的原型 1、对象的__p...

    justjavac 评论0 收藏0
  • 深入理解Javascript原型关系

    摘要:如下所示在规范中,已经正式把属性添加到规范中也可以通过设置和获取对象的原型对象对象之间的关系可以用下图来表示但规范主要介绍了如何利用构造函数去构建原型关系。 前言 在软件工程中,代码重用的模式极为重要,因为他们可以显著地减少软件开发的成本。在那些主流的基于类的语言(比如Java,C++)中都是通过继承(extend)来实现代码复用,同时类继承引入了一套类型规范。而JavaScript是...

    ethernet 评论0 收藏0
  • 讲清楚之 javascript原形

    摘要:构造函数和实例都通过属性指向了原形。代码示例是构造函数的实例的属性与的属性保存的值相等,即他们指向同一个对象原形。 讲清楚之javascript原型 标签: javascript javascript 中原形是一个比较难于理解的概念。javascript 权威指南在原形这一章也花了大量的篇幅进行介绍,也许你已经读过javascript 权威指南,或者已经是读第N篇了,然而这篇文章的目...

    高胜山 评论0 收藏0
  • 深入学习js之——原型原型链

    摘要:我们用一张图表示构造函数和实例原型之间的关系好了构造函数和实例原型之间的关系我们已经梳理清楚了,那我们怎么表示实例与实例原型,也就是或者和之间的关系呢。 开篇: 在Brendan Eich大神为JavaScript设计面向对象系统的时候,借鉴了Self 和Smalltalk这两门基于原型的语言,之所以选择基于原型的面向对象系统,并不是因为时间匆忙,它设计起来相对简单,而是因为从一开始B...

    FingerLiu 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<