JS从零开始(11)

123 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第11天,点击查看活动详情

基本包装类型

什么是基本包装类型?

何为包装?在js基本包装类型中包装指的是将基本数据类型转换成对应的对象

在js中,我们知道数据类型分为基本数据类型和引用数据类型,而js则为我们提供了三个基本包装类👇👇

  • String()
  • Number()
  • Boolean()

那这三个包装类型是如何使用的呢?

var str1 = 'hhhhhh';
console.log(typeof str1);//string
var str2 = new String(str1);
console.log(typeof str2);//object

这就是包装类型将基本数据类型转换成了对象object

属性的绑定

在js中,我们说属性和方法,一般情况下指的都是对象,因而基本数据类型是没有办法添加属性和方法的,只能添加给对象

例如:

var str1 = 'llll';
str1.sex = 'girl';
console.log(typeof str1);//string
console.log(str1.sex);//undefined

如代码所见,当我给str1绑定属性sex的时候,会出现undefined绑定失败,也就是说,基本数据类型是无法绑定属性的。

再如:

var str2 = new String('llll');//包装类型将其转换为对象
str2.num = 123;//绑定属性num
console.log(str2);
console.log(typeof str2); //object
console.log(str2.num);//123

会出现这样的打印结果:

image.png

而转换后的对象,绑定num属性成功,打印结果是这样

image.png

图中红框部分就是绑定的属性num,而123就是绑定的属性的值

基本包装类型的作用

有人可能会说,基本数据类型不是不能绑定属性吗?那下面的代码又作何解释?

var str3 = 'hello world!';//基本数据类型
console.log(str3.length); // 12
console.log(str3.indexOf("w"));//6

其实并不如此,在js中,当我们去调用基本数据类型的属性和方法时,js引擎会自动使用包装类将其进行隐式转换,通过这样的转换,基本数据类型就有了所谓的属性和方法,因而我们也就能够顺利调用了。