包装对象

包装对象

基本概念

所谓“包装对象”,就是分别与数值、字符串、布尔值相对应的Number、String、Boolean三个原生对象。这三个原生对象可以把原始类型的值变成(包装成)对象。

var v1 = new Number(123);
var v2 = new String('abc');
var v3 = new Boolean(true);
typeof v1 // "object"
typeof v2 // "object"
typeof v3 // "object"

v1 === 123 // false
v2 === 'abc' // false
v3 === true // false
  • 包装对象使得JS对象涵盖所有的值,使原始类型的值也能很方便地去调用某些方法。
  • 如果不作为构造函数调用,那么常用于将任意类型的值转为数值、字符串、布尔值。
Number(123) // 123
String('abc') // "abc"
Boolean(true) // true

valueOf()和toString()方法

包装对象对应的方法是valueOf()和toString(),我们来看一下他们的用途。

  • valueOf()返回包装对象实例对应的原始类型的值
new Number(123).valueOf()  // 123
new String('abc').valueOf() // "abc"
new Boolean(true).valueOf() // true
  • toString()返回对应的字符串形式
new Number(123).toString()  // "123"
new String('abc').toString() // "abc"
new Boolean(true).toString() // "true"

自动转换

  • 原始类型的值,可以自动当做对象来调用,即调用对象的各种方法和参数,JS引擎会自动将原始类型的值转为包装对象的实例,
    使用后立刻销毁实例。如:
'abc'.length // 3
  • abc是一个字符串,本身不是对象,不能调用length属性。JavaScript 引擎自动将其转为包装对象,在这个对象上调用length属性。调用结束后,这个临时对象就会被销毁。这就叫原始类型与实例对象的自动转换。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容