美文网首页
原型与原型链

原型与原型链

作者: leown | 来源:发表于2018-12-17 17:42 被阅读8次

些全局变量分为两种:

一种是 ECMAScript 规定的,比如:global.parseInt,global.parseFloat,global.Number

一种是浏览器自己加的属性,比如:window.alert,window.prompt,window.comfirm

所有 API 都可以在 MDN 里找到详细的资料。这里我主要说的是第一种。

每当我们建一个新的对象时,我们似乎总是能用一大堆原先并没有定义的方法,这是为啥呢?因为有原型这个神奇的东西存在,每当我们申明的时候,他就会自动建立一个proto属性与所对应的方法的原型相连,这样我们就共用了原型的方法

简单的来说,我们要搞清楚原型链的架构,首先就要明白js的内置方法如何被构建起来的,由于js的垃圾回收机制,当一个对象未被引用的时候,就会被视作垃圾,于是就会被清除,但是我们发现Number,String这些方法都没有被清除,这就让人啧啧称奇了。这其实就是在每个对象内部加上了一个prototype属性,叫做该对象的原型属性,又给每个对象加上proto,叫做原型链指针,他指向本对象的原型对象,用这种方法使得每个对象相互连接。每当我们声明一个对象时,它就会去找到他所对应的方法的原型,然后予以连接,这也就能在建立一个对象以后,他能拥有许多你本身并没有定义的方法的原因,如图:

image.png

此时,我声明了变量a,但是我并没有给a定义方法,但我toString却没有错,就是因为我的proto属性已经有了这个方法,所以不报错。

那么每个对象的原型链指针(proto)指向谁呢?内置对象的原型对象指向Function的原型,包括内置对象Function自己的,如图:

image.png

但是,内置对象的原型对象(Function.prototype)的原型对象是谁呢?因为他本身就是个对象啊,于是他就指向对象的原型对象,于是

image.png

也就是说,我们以后看见一个兑现,就判断他是属于啥方法,接着就归到啥方法的原型中去就好了

给出公式:

Object.proto === 对应方法的原型.prototype;

再举一个例子,还是那个空对象a,a的原型链指向应该是Object的原型,因为他就是Object方法构造出来的,而a.proto.proto(a的原型的原型链指向)就应该是null,因为他就是object.prototype.proto,值为null

image.png

相关文章

  • JavaScript 原型、原型链与原型继承

    原型,原型链与原型继承 用自己的方式理解原型,原型链和原型继承 javascript——原型与原型链 JavaSc...

  • 2019-01-28

    原型与原型链

  • 廖雪峰JS小记

    (function(){})() 原型,原型链 浅谈Js原型的理解JS 原型与原型链终极详解 对象 对象:一种无序...

  • Javascript(三)之原型继承理解

    进阶路线 3 原型继承 3.1 优秀文章 最详尽的 JS 原型与原型链终极详解 一 最详尽的 JS 原型与原型链终...

  • JavaScript 面向对象第一篇

    1.原型链 ---- (实例对象与原型之间的连接 叫做原型链) 2. hasOwnproperty ----(看是...

  • 原型与原型链以及继承

    今天复习下原型与原型链的知识,以及记录新学的继承知识点。 知识点纲要 原型与原型链 es5与es6继承 什么是原型...

  • JavaScript深入理解this关键字(一)

    摘要 最近在公司需要做培训,我打算把JavaScript中的原型与原型链讲给大家。但我在梳理原型与原型链的时候发现...

  • js_继承及原型链等(四)

    js_继承及原型链等(三) 1. 继承 依赖于原型链来完成的继承 发生在对象与对象之间 原型链,如下: ==原型链...

  • 原型链&instanceof关键字

    1.原型链&instanceof关键字 简单说明 原型链 与 instanceof 作用原理 1.原型链 1...

  • 原型、原型链

    (什么是原型、原型链?有什么作用) JavaScirpt深入之从原型到原型链 图解 Javascript 原型链 ...

网友评论

      本文标题:原型与原型链

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