js基础_50、包装类

基本数据类型
String Number Boolean Null Undefined
引用数据类型
Object

在JS中为我们提供了三个包装类,通过这三个包装类可以将基本数据类型的数据转换为对象

String()

—-可以将基本数据类型字符串转换为String对象

Number()

—-可以将基本数据类型的数字转换为Number对象

Boolean()

—-可以将基本数据类型的布尔值转换为Boolean对象

创建一个Number类型的对象

var num=new Number(3);
console.log(num);

输出结果为3

但是:我们在实际应用中不会使用基本数据类型的对象,如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果。

方法和属性只能添加给对象,不能添加给基本数据类型,当我们对一些基本数据类型的值去调用属性和方法时,浏览器(解析器)会临时使用包装类将其转换为对象,然后再调用对象的属性和方法,调完以后,在将其转换为基本数据类型。

比如:

var s=123;
s=s.toString();//浏览器将s转为为了Number的对象,然后调用的是Number对象的tostring()方法,而不是基本数据类型number s 的tostring()方法
console.log(typeof s);//其输出结果为string

比如,给基本数据类型添加属性:

var s=0;
s.hello=’你好’;//这里因为是基本数据类型,所以添加属性浏览器临时将其转换成立一个对象,执行完了之后这个对象就被销毁了。所以,属性自然也没了,只有刚刚被转换时存在。
console.log(s.hello);//输出结果为undefined,这里又被转换为了一个对象,因为这里对基本数据类型使用其属性,但是这个临时被转的对象和上一步被转换的对象不相同,也没有使用new关键字声明对象,所以这个对象里也没有该属性。

所以,包装类是给浏览器底层自己用的。

我们使用基本数据类型的String能够直接使用String对象方法和属性也就是因为基本数据类型临时被转为了String对象。(自动装箱和拆箱)

posted @ 2022-03-12 10:41  青仙  阅读(42)  评论(0编辑  收藏  举报