全局对象
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 存储这个「公用属性组成的对象」的地址。
重要公式
请记住并疯狂思考下面这张图
原型链
每一个对象都有自己的原型对象,原型对象本身也是对象,原型对象也有自己的原型对象,这样就形成了一个链式结构,叫做原型链。
网友评论