一看标题,懵了,基本数据类型怎么可以使用内置方法呢
首先我们学习JavaScript,都知道在JavaScript中有八种数据类型,可以划分为原始数据类型和对象数据类型(MDN划分)。在ES中,数据的划分是基本数据类型和引用类型,两者含义相同。
一般代码中,基本数据类型都是放在栈内存中;而引用类型都是放在堆内存中
基本数据类型和引用类型这两个类型其中一个很明显的区别是,引用类型有自己内置的方法用来操作数据,而基本数据类型不能跟引用类型一样通过内置方法对数据进行操作。但是在ES中,基本数据类型中的Boolean、Number、String这三个基本数据类型,ES提供了它们对应的特殊引用类型,也就是包装类型。
var num = 1.23456
var num1 = num.toFixed(2)
console.log(num1); // 1.23
咦,这时候就有疑惑了,平时都是这样写的呀,有什么大惊小怪的呀?非也。其实如果ES没有提供包装类型,toFixed()是不能被调用的,这三行代码的背后你研究过吗。背后非常不可思议。
其实当程序执行到第二行代码的时候,代码执行的背后会自动创建Number基本数据类型的实例,但是和基本数据类型的值不一样,这个实例也就是ES提供的包装类型的对象,然后是调用这个包装类型对象的内置方法,随后销毁这个自动创建得到实例,最后就可以执行了
接下来通过代码形象的表达代码的背后过程
var num = 1.23456 // 创建num变量 Number基本数据类型
var num1 = num.toFixed(2) //代码背后自动执行以下操作:
var create_num=new Number(1.23456) //创建一个Number基本数据类型对应的包装类型,值也一样
var _num=create_num.toFixed(2) //通过创建的对象去调用包装对象下的方法,赋值给_num
create_num=null //销毁代码背后临时创建的create_num变量
console.log(num1); // 1.23
若有错误,敬请指正!