根本包装类

js中为了便于根本类型操作,提供了3个非凡的援用类型:Boolean、Number、String它们具备根本类型非凡行为。

实际上,每当读取一个根本类型的时候,js外部会主动创立一个根本包装类型对象,能够让咱们调用一些办法来操作。

let str = 'hello 蛙人'let str1 = str.substring(2)

下面example中,str是一个字符串类型,然而它调用了substring办法,并将后果保留在了str1中,咱们晓得根本类型不是对象,咱们就会想,哎 它不是对象为什么能调用办法,其实js外部曾经实现了一系列的解决,当执行第二行代码时,拜访过程处于一种读取状态,也就是要从内存中读取这个字符串的值。那js外部是怎么解决的呢,看上面。

  1. 创立String类型的实例
  2. 在实例上调用指定的办法
  3. 最初销毁该实例
let str = new String('hello 蛙人')let str1 = str.substring(2)str1 = null

通过下面的加工后,根本字符串变的跟对象一样,下面这三个步骤也实用于Boolean、Number类型。


那么有的小伙伴就会纳闷,援用类型和根本包装类有什么不同呢,最次要的区别就是对象的生存期

  • 援用类型:应用new操作符创立的援用类型实例,在执行流来到以后作用域之前始终都保留在内存中,
  • 根本包装类型:只存在一行代码的执行霎时,而后立刻销毁

根本包装类意味着咱们不能在运行时为对象增加属性及办法,因为它们执行完后会立刻销毁

let str = '蛙人'str.age = 23console.log(str.age) // undefined

下面第二行代码中,为“蛙人“增加 age 属性,然而在上面打印发现是 undefined,问题就在于,第二行代码执行完后立刻销毁,第三行代码再次创立String对象发现没有该age属性。


如果感觉写的不错的话,那就点个赞叭!