JavaScript作用域
- 隐式全局变量:声明的变量没有var,就叫做隐式全局变量
- 全局变量是不能被delete删除的,隐式全局变量是可以被删除的
- 除了函数以外,其他任何地方创建的变量都是全局变量
- 全局变量:如果页面不关闭,那么就不会释放,就会占空间,消耗内存
预解析
预解析:提前解析代码
- 把变量的声明提前了----提前到当前所在的作用域的最上面 赋值不会提前
- 函数的声明也会提前-----也会提前到当前作用域的最上面
对象之原型
每一个JavaScript对象(除null外),都和另一个对象相关联,“另一个”对象就是我们熟知的原型,每一个对象都从原型继承属性。
所有通过对象直接量创建的对象都具有一个原型对象,并可以通过JavaScript代码Object.prototype获得对原型对象的引用。通过关键字new和构造函数调用创建的对象的原型就是构造函数的prototype属性的值。
对象(JavaScript权威指南)
三类内置对象、两类属性
-
内置对象(native object)是由ECMAScript规范定义的对象或类。例如,数组、函数、日期和正则表达式都是内置对象
-
宿主对象(host object)是由JavaScript解释器所嵌入的宿主环境(比如web浏览器)定义的。客户端JavaScript中标识网页结构的HTMLElement对象均是宿主对象。既然宿主环境定义的方法可以当做普通的JavaScript函数对象,那么宿主对象也可以当成内置对象
-
自定义对象(user-defined object)
-
自有属性(own property)是直接在对象中定义的属性
-
继承属性(inherited property)是在对象的原型对象中定义的属性