美文网首页
原型与原型链

原型与原型链

作者: 七月凛冬 | 来源:发表于2018-12-15 00:40 被阅读0次

当声明一个对象,那么这个对象一定要找到一个公用的属性,如果没有公用的属性,那么这个对象就没啥用了,除了存数据就没有其他的价值了,有了公用属性之后,就可以调用各种API。
所有对象都有 toStringvalueOf属性,那么我们是否有必要给每个对象一个 toStringvalueOf 呢?
明显不需要。
JS 的做法是把 toStringvalueOf 放在一个对象里(暂且叫做公用属性组成的对象)
然后让每一个对象的 __proto__存储这个「公用属性组成的对象」的地址。
原型就是公用属性的意思。
下图中公用属性通过__proto__串起来的像链一样的路线就是原型链。

原型链

浏览器一开始就在内存里把原型给初始化好了。如下:


prototype原型
var a = {}
// undefined
var b = {}
// undefined
a === b
// false
a.toString === b.toString
// true

上面代码能看出,ab是两个完全不一样的对象,严格相等运算返回的结果都是false,但是两者的toString是完全一样的,因为两个对象的toString属性都存在同一个公用属性里。(也就是Object的原型里)

var a = {}
// undefined
Object.prototype
// {constructor: ƒ, __defineGetter__: ƒ, __defineSetter__: ƒ, hasOwnProperty: ƒ, __lookupGetter__: ƒ, …}
a.__proto__ === Object.prototype
// true

上面代码能看出,Object.prototypeObject的公用属性的引用(不引用就要被回收了),a.__proto__也是Object的公用属性的引用,所以严格相等返回的是true(必须要用公用属性)。

var n1 = new Number(1)
// undefined
n1.__proto__ === Number.prototype
// true
n1.__proto__.__proto__ === Object.prototype
// true

上列代码表示n1是一个对象,但是对象里面是一个数值1,所以n1.__proto__引用的公共属性跟Number.prototype引用的是同样的属性,Number.prototype引用的公用属性本身里面也有个__proto__引用Object.prototype引用到的公共属性(具体可以看文章开头两幅图来理解),所以n1.__proto__.__proto__是与Object.prototype严格相等的,因为引用的都是同一个公共属性。

相关文章

  • 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/wgsnhqtx.html