原型与原型链

全局对象

ECMAScript 规定全局对象叫做 global,但是浏览器把 window 作为全局对象(浏览器先存在的)

window 就是一个哈希表,有很多属性。

window 的属性就是全局变量。
在浏览器下, window 的属性可以分为两类:

  • ECMAScript 规定的,例如 parseInt() ,parseFloat() ,Number() ,String(),Boolean(), setTimeout() 等等
  • 浏览器私有属性,例如 alert 弹框提示 , propmt 用户填写 , confirm 确认, console 等,document 也是。 DOM也有标准,由 W3C 制定。
公用的属性(就是原型,prototype)

1.避免浪费内存

2.当声明一个对象时,生成一个隐藏的key proto ,其 value 指向公用属性。
所有对象都有 toString 和 valueOf 属性,那么我们是否有必要给每个对象一个 toString 和 valueOf 呢?明显不需要。

JS 的做法是把 toString 和 valueOf 放在一个对象里(暂且叫做公用属性组成的对象),然后让每一个对象的 proto 存储这个「公用属性组成的对象」的地址。

重要公式
请记住并疯狂思考下面这张图
原型链

每一个对象都有自己的原型对象,原型对象本身也是对象,原型对象也有自己的原型对象,这样就形成了一个链式结构,叫做原型链。


你可能感兴趣的:(原型与原型链)