JS-包装对象
1、字符串、数字、布尔值不是对象,为什么会有属性呢?例如:
1 var s = "test"; 2 var len = s.length;//4,使用字符串的属性
因为只要引用了字符串s的属性,JavaScript就会将字符串值通过调用new String(s)的方式临时转换成对象,属性引用结束,临时对象销毁。
例如以下代码,对字符串s设置属性会失败:
1 var s = "test"; 2 s.len = 4; 3 var t = s.len;// undefined
同样,数字和布尔值也具有各自的构造函数创建临时对象:Number()、Boolean()。在存取字符串、数字或布尔值的属性时创建的临时对象称作包装对象。
注:null和undefined没有包装对象,访问它们的属性会造成一个类型错误。
2、可通过String()、Number()、Booolean()构造函数来显示地创建包装对象:
1 var s = "test",n = 1,b = true; // 一个字符串、数字和布尔值 2 var S = new String(s); // 一个字符串对象 3 var N = new Number(n); // 一个数值对象 4 var B = new Boolean(b); // 一个布尔对象 5 6 // 但是这两种方法并不是总是相等的,例如 7 s==S; // true 8 s===S; // false