>[success] # 原始类型的包装类 下面案例`name` 是一个字符串类型,但是可以像对象一样使用调用`length` 方法,按照正常理解来说原始类型**并非对象类型**,所以从理论上来说,它们是没有办法**获取属性或者调用方法** ~~~ var name = "Hello World" console.log(name.length) ~~~ 是因为JavaScript为了可以**使其可以获取属性和调用方法**,**对其封装了对应的包装类型** 常见的包装类型有:**String、Number、Boolean、Symbol、BigInt**类型 >[info] ## 包装类型的使用过程 当调用一个原始类型的属性或者方法时,会进行如下操作: 1. 根据原始值,**创建一个原始类型对应的包装类型对象** 2. 调用**对应的属性或者方法**,返回一个新的值 3. 创建的包装类对象**被销毁** ~~~ // var name = "Hello World" // console.log(name.length) var name = new String("Hello World") console.log(name.length) ~~~ 注:JavaScript引擎会进行很多的优化,它可以跳过创建包装类的过程在内部直接完成属性的获取或者方法的调用,null、undefined没有任何的方法,也没有对应的“对象包装类