前言: JavaScript中一切皆对象
当我们给下面的数值 / 字符串 / 布尔值类型的变量增加属性, 会发现我们的设置不会生效, 这是什么原因呢? 这就要讲到 "包装对象" 了;
var a = 123; a.name = "number"; a.name; // undefined; var b = "hello"; b.name = "string"; b.name; // undefined; var c = true; c.name = "boolean"; c.name; // undefined;
在JavaScript中, 数值 / 字符串 / 布尔值都是基本类型, 而基本类型的值是不可变的, 但这又违背了JavaScript一切皆对象这句话, 因此, 一定有什么方法可以对这三种基本类型进行对象的相关操作;
第一步: 调用基本类型的方法时, 基本类型会自动转换为它所对应的包装对象
var a = "hello"; // 此时是一个基本类型 a; // "hello" // 使用相关方法或属性时, 它会转换为对应的包装对象, 比如下面转换为: String a.length; // 5 a.replace("l",""); // "helo" // 上面的调用可以看作是下面的执行 String(a).length; // 5 String(a).replace("l", ""); // "helo"
注意:
1. 基本类型可以使用对应的包装对象的属性和方法, 但不能对包装对象添加/删除或修改属性或方法;
2. 如果要对包装对象作添加/删除或修改属性或方法的操作, 则可以使用类似: String().prototype.xxx这种方法在包装对象的原型上进行修改.