1.Window对象
定义:Window 对象表示浏览器中打开的窗口,是浏览器提供的。所有浏览器都支持该对象。
如果文档包含框架(<frame> 或 <iframe> 标签),浏览器会为 HTML 文档创建一个 window 对象,并为每个框架创建一个额外的 window 对象。
window的常见方法:
用内存图表示window:
注:灰色的变量名不属于对象,Object这类首字母大写的对象一般有prototype属性。
window对象&window变量:
- window变量,是变量名存在不知什么区
- window对象,是属性和方法组成的一堆数据,在Heap堆区
- console.dir(对象名),目录形式打印对象的结构
注:对象没有名字只有地址,对象和他的变量名通过地址连接在一起。
2.prototype原型
prototype原型&__proto__原型链:
- prototype:显式原型,是函数function的一个属性 ,即原型对象(类型-Object)
- __proto__:隐式原型,是实例对象拥有的属性 ,即原型链对象(类型-Object)
- isPrototypeOf(): 检测两个对象之间是否存在原型关系
- 函数的所有实例对象自动拥有原型中的属性/方法,对象的隐式原型 __proto__值为构造函数的显式原型prototype的值
prototype&__proto__作用:
-
prototype:保存构造函数构造的属性/方法,使构造出来的函数共享属性/方法
-
__proto__:读实例对象的属性/方法时,顺着 __proto__属性链式查找(对象本身->父级->根Object->undefined)
js世界内存图结构:
- 浏览器和Window对象提供的方法,通过prototype存储就构成了JS世界
- 你新建的对象实例通过__proto__属性就可以访问JS提供的属性/方法。