JS(7)原始值包装类型

63 阅读2分钟

原始值包装类型

在 JS 中,原始值(基本数据)类型是没有属性和方法的,但是为便于操作基本数据类型,ES 提供了三种特殊的引用类型 ----- 原始值包装类型。Boolean 、Number 、String。即它们仨是在它们原来的基础上进行包装,给它们赋予一些属性和方法!!!

每当使用到原始值的方法或属性时,后台都会创建一个相应的原始值包装类型的对象,步骤如下:

  • 创建对应原始值包装类型的对象
  • 调用相关方法 or 属性(length)
  • 立马销毁对象
let a = "abc";
console.log(a.length); // 执行到改行时,JS 会把 "abc"在后台转换为 String("abc"),
然后访问其身上的 length 属性,然后执行完改行后,会立马把 String("abc") 对象销毁!!!!

!!!注意:

原始值包装类型的实例对象的声明周期只存在于访问它的那行代码期间 ,所以不可以给原始值包装类型的对象添加属性!!

let s1 = "yhx";
s1.color = "red";
console.log(s1.color) // undefined

装箱and拆箱

  • 装箱 JS 也可以通过 Object() 函数显式地把基本类型转换为包装类型!!!

2132.png

  • 拆箱 也可以使用 valueOf()  方法把包装类型转换为基本类型。在引用类型对象上调用该方法,会返回它的原始值类型,如果没有,就返回该对象本身!!!!

补:valueOf() 方法:

该方法返回对象的原始值。eg: 像 number、string、boolean 这些,有自己的原始值包装类型!!那么在它们身上调用 valueOf() 就会返回它们的原始值类型。如果对象没有原始值,就返回该对象本身!!当然可以重写该方法,返回自己想返回的值!!!