怎样理解基本类型的包装对象

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

原文地址:https://www.cnblogs.com/aisowe/p/11585613.html