类用方法和属性的组合来表示一种事物。某个具体的类的实物被称为对象。第三章中已经介绍了Number对象,Boolean对象和String对象。此处将介绍JavaScript中的另外四种内建对象:用于保存一系列数据的数组对象(Array) ,用于日期操作的对象(Date),用于数学计算的静态类Math对象(Math)和正则表达式(RegExp)。另外用户也可以自定义新的对象。
变量中对象的存储于基本数据类型不同。对基本数据类型来说,变量中保存的是实际的值,而将某个对象赋值给一个变量时,变量中保存的是一个指向该对象对局的内存地址。当然这不意味操作对象数据变量时在操作内存地址,具体的内存分配和对象管理是由JavaScript后台实现的。由此解释了我们第二章提到的一点:赋值一个存放对象的变量A给变量B时,如果操作A改变数据内容,则B中的内容同样会被改变。
注意:
1. Math是一个静态类,没有构造函数所以Math对象不需要构造函数,使用时不需要初始化。相对的而且其他内建对象都需要,比如var test = new Array();此处的new Array()就是运行Array类的构造函数来初始化变量。
2. 对象的某些属性是只读的,我们只能读取其内容而不能修改它。
3. 对象的方法跟函数的使用类似,同样可以传参数,可以有返回值。
4. 基本数据类型布尔型,数值和字符串在JavaScript内建对象中对应的是Boolean对象,Number对象和String对象。利用JavaScript自动类型转换的原理,我们在使用比如字符串length属性时,JavaScript会将其自动转化为一个临时的String对象再操作。当然如果我们声明时指定var test = new String(“hello world”)时,定义的直接就是String对象,而不是基本数据类型。但是将一个String对象的变量赋值给另外一个变量时,另外一个变量默认的数据类型仍旧为基本数据类型。也就是说var test = new String(“hello world”);var test2 = test;中,test2仍旧为基本数据类型字符串,而不是String对象。