JavaScript的包装类型
引用类型的值(对象)是一个引用类型的一个实例。
在 ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也通常称为类。
尽管 ECMASript 中,从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。引用类型有时候也被称为对象定义,因为它们描述是一类对象所具有的属性和方法。
为了便于操作基本数据类型,在 JavaScript 中,和 JAVA 类似,也提供了对于基本数据类型的包装类型。例如 Number、Boolean、String 类型。
这些类型与其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。
基本类型不像对象,但是却有很多属性和方法,比如 Number 类型的 toFixed,String 类型的 subString 等等。这是由于在创建一个基本类型的时候自动为他们创建了一个基本包装类型的对象。
引用类型与基本包装类型的主要区别就是对象的生存期。
使用 new 操作符创建的引用类型的实例,在执行流离开当前作用域之前都一直保存在内存中。
而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。
这意味着我们不能再运行时为基本类型值添加属性和方法。
如:
var str = 'string'
str.slice(2) // 'ring'
2
在代码执行到第二行时,会创建一个 String 的实例:
new String(string)之后在实例上调用
slice方法最后,调用结束,销毁实例
Boolean、Number 在调用方法时也是上面三个步骤。