前言: 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这种方法在包装对象的原型上进行修改.

 

评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!