原型与原型链

原型

首先,我们来讲讲浏览器的初始状态,就是在无代码的情况下,浏览器所分配到的内存的使用情况,首先浏览器会创建一个全局对象global,而在这个全局对象global内含有许多的全局函数,例如global.parseInt、global.parseFloat、global.Number、global.String、global.Boolean、global.Object等等,函数也是对象的一种,因此也会具有属性,其中一种属性为prototype,这个属性的含义便是函数的原型对象。
另一方面,通过这些函数如Number()、String()、Object()所构建出来的对象,都会拥有着一个属性proto,这个属性的value指向创建该对象的构造函数的原型对象,如:

var a=new Number()
a.__proto __===Number.prototype

var s=String()
s.__proto __ === String.prototype

因为 Function 是 Object 的构造函数, 由此我们得到:

var o = new Object()
o.__proto __ === Function.prototype 或:
var b = {}
o.__proto __ === Function.prototype

因为函数也是一种对象,由此我们得到:

对象.__proto __ === 对象的构造函数.prototype
Function.__proto __ === Function.prototype
Function.__proto __.__proto __ === Object.prototype

原型链

除函数Object以外的其他函数的原型对象在最后均会通过proto指向函数的原型对象,即Object.prototype

Function.prototype.__proto __===Object.prototype

函数Object的原型对象最后会通过proto指向null

Object.prototype.__proto __ === null

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 很多患了肛周脓肿的宝宝家长,很是担心宝宝是否已经是肛瘘了,得了肛瘘是不是一定要手术,能自愈吗? 婴幼儿的肛周脓肿,...
    Yesterdayyou阅读 1,079评论 0 0
  • 今天是什么日子 起床:7 就寝:23 天气:晴朗 心情:平静 叫我起床的不是闹钟是梦想 今日三只青蛙/番茄钟 下修...
    心境如花阅读 48评论 0 0