92 lines
2.3 KiB
JavaScript
92 lines
2.3 KiB
JavaScript
|
|
|||
|
## 包装类
|
|||
|
|
|||
|
### 包装类的介绍
|
|||
|
|
|||
|
我们都知道,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)
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|