
## 包装类

### 包装类的介绍

我们都知道，js中的数据类型包括以下几种。

- 基本数据类型：String、Number、Boolean、Null、Undefined

- 引用数据类型：Object

JS为我们提供了**三个包装类**：

- String()：将基本数据类型字符串，转换为String对象。

- Number()：将基本数据类型的数字，转换为Number对象。

- Boolean()：将基本数据类型的布尔值，转换为Boolean对象。

通过上面这这三个包装类，我们可以**将基本数据类型的数据转换为对象**。


代码举例：

```javascript
	var num = new Number(3);

	var str = new String("hello");

	var bool = new Boolean(true);

	console.log(typeof num); // 打印结果：object
```


**需要注意的是**：我们在实际应用中不会使用基本数据类型的对象。如果使用基本数据类型的对象，在做一些比较时可能会带来一些**不可预期**的结果。

比如说：

```javascript
	var boo1 = new Boolean(true);
	var boo2 = new Boolean(true);

	console.log(boo1 === boo2); // 打印结果竟然是：false
```


再比如说：

```javascript
var boo3 = new Boolean(false);

if (boo3) {
	console.log('qianguyihao'); // 这行代码竟然执行了
}
```


### 基本数据类型不能添加属性和方法

方法和属性只能添加给对象，不能添加给基本数据类型。

**注意**：当我们对一些基本数据类型的值去调用属性和方法时，浏览器会**临时使用包装类将其转换为对象**，然后在调用对象的属性和方法；调用完以后，在将其转换为基本数据类型。

代码举例：

```javascript
	var str = 123;

	str = str.toString(); // 将 number 类型转换为 string 类型
	str.hello = "千古壹号"; // 添加属性

	console.log(typeof str); // 打印结果：string
	console.log(str.hello); // 打印结果：undefined
```

再比如，String 对象的很多内置方法，也可以直接给字符串用。此时，也是临时将字符串转换为 String 对象，然后再调用内置方法。



## 我的公众号

想学习**代码之外的技能**？不妨关注我的微信公众号：**千古壹号**（id：`qianguyihao`）。

扫一扫，你将发现另一个全新的世界，而这将是一场美丽的意外：

![](http://img.smyhvae.com/20190101.png)




