3. 数据类型
3.6 String 类型
String 类型用于表示由零个或多个16位Unicode字符组成的字符序列,即字符串。在ECMAScript中,字符串可以由双引号或单引号表示,并且这两种方式没有任何区别。
String数据类型包含一些特殊的字符字面量,也叫做转义序列,用于表示非打印字符,或者具有其他用途的字符,常见的字符字面量如下所示:
- \n:换行
- \t:制表符
- \b:空格
- \r:回车
- \:\
- ':’
- ":”
以上这些字符字面量在字符串中只作为1个字符来解析,因此下面定义的字符串长度为2:
var text = "h\\";
alert(text.length); //2
ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它的值就不能改变。要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量。例如:
var lang = "Java";
lang = lang + "Script";
实现以上操作的过程如下:首先创建一个能容纳10个字符的新字符串,然后在这个字符串中填充"Java"和"Script",最后一步是销毁原来的字符串"Java"和字符串"Script"。这个过程是在后台发生的,而这也是某些旧版本浏览器拼接字符串速度很慢的原因。
要将一个值转换为字符串,有两种方式:
- 调用几乎每个值都有的toString()函数
- 使用转型函数String()
除了null值和undefined值,其他类型的对象都拥有一个toString函数。下面是一个简单的例子:
var age = 11;
var ageAsString = age.toString(); //字符串"11"
var found = true;
var foundAsString = found.toString(); //字符串"true"
字符串也拥有toString()方法,返回此字符串的一个副本。另外,在调用数值的toString()方法时,可以传递一个参数:输出数值的基数。默认情况下,toString()方法以十进制格式返回数值的字符串表示。
在不知道要转换的值是不是null或undefined的情况下,还可以使用转型函数String()。这个函数能够将任何类型的值转换为字符串。String()函数遵循以下规则:
- 如果由toString()方法,则调用该方法并返回结果
- 如果值是null,则返回"null"
- 如果值是undefined,则返回"undefined"
3.7 Object类型
ECMAScript中的Object类型其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例,并为其添加属性和方法,就可以创建自定义对象,如下所示:
var o = new Object();
在ECMAScript中,Object类型是所有其他类型的基础。换句话说,Object类型所具有的任何属性和方法也都存在与其他更具体的对象中。Object的每个实例都具有下列属性和方法:
- Constructor:保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是Object()。
- hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。
- isPrototypeOf(object):用于检查被传入的对象是否是另一个对象的原型。
- propertyIsEnumerable(propertyName):用于检查给定的属性是否能够使用for-in语句来枚举。
- toLocaleString():返回对象的字符串表示,该字符串与执行环境的地区对应。
- toString():返回对象的字符串表示。
- valueOf():返回对象的字符串,数值或布尔值表示。通常与toString()方法的返回值相同。
网友评论