普通的JavaScript对象是命名值的无序集合,JavaScript同样定义了一种特殊的对象-数组array,表示带编号的值的有序集合,JavaScript为数组定义了专用的语法,使得数组具有区别于普通对象而独有的行为特性
JavaScript还定义了另一种特殊对象--函数,函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码并返回运算结果
如果函数用来初始化类(new运算符)一个新建的对象,称之为构造函数。每一个构造函数定义了一个类(class)对象--由构造函数的初始化对象组成的集合,类可以看成是对象类型的子类型,除了数组类和函数类之外JavaScript核心定义了其他三种有用的类:日期类,正则类,错误类
JavaScript解释器有自己的内存管理机制,可以自动对内存自动进行垃圾回收,这意味着程序可以按需创建对象
JavaScript是面向对象的语言不严格的讲我们可以不用全局的定义函数去操作不同类型的数值,数据本身可以定义方法来使用值,例如对数组a的元素进行排序,没必要将a传入sort()函数,而是调用a一个方法
JavaScript类型分为原始类型和对象类型,也可以分为可变类型和数据不可变类型
JavaScript解释器启动的时候,将创建一个全新的全局对象,并给它一组定义的初始属性:全局属性undefined,infinity和NaN,全局函数isNaN(),parseint(),eval(),构造函数Date(),Regexp(),String(),Object()和Array(),全局对象Math和JSON
存取字符串,数字,或者布尔值的属性时创建的临时对象称作包装对象,它只是偶尔用来区分字符串值和字符串对象,数字和数值对象以及布尔值和布尔对象,通常包装对象只是被看做是一种实现细节而不用特别关注
编程语
言分为动态类型语言和静态类型语言,动态类型语言是指在运行期间才去做数据类型检查的语言,静态类型语言与动态类型语言刚好相反,它的数据类型是在编译期间检查的
位运算
按位非,位于一个整型参数之前,将操作数的所有位置取反,对一个值使用~号相当于改变符号并减一
eval()函数
声明语句
var和function都是声明语句,声明或定义变量和函数,这些语句定义标识符并给其赋值,这些标识符可以在程序的任意地方使用
标签语句
通过语句定义标签可以在程序的任何地方通过标签签名引用这条语句,continue和break后接标签名
try,catch,finally语句
finally语句块,不论try语句块是否抛出异常但是都会执行finally语句
with语句
作用域链,一个可以按需检索的对象列表 通过她可以进行变量名的解析,with语句用于临时扩展作用域链
语法with(object)
statement
这条语句把object添加到作用域链的头部然后执行statement
严格模式禁止使用with语句非严格模式也不推荐,难于优化运行相对变慢
debugger语句
ECMAScript5中,debugger语句正式加入,但是该语句不会启动调试器,必须先启用调试器该语句才能正常工作
use strict指令
使用该命令的目的是说明后续代码会解析为严格代码
对象
复合值,属性的无序集合,散列,散列表,字典,关联数组;从一个称为原型的对象继承属性,对象的方法通常是继承的属性,“原型式继承”是其核心特征