根本包装类
js 中为了便于根本类型操作,提供了 3 个非凡的援用类型:Boolean、Number、String
它们具备根本类型非凡行为。
实际上,每当读取一个根本类型的时候,js 外部会主动创立一个根本包装类型对象,能够让咱们调用一些办法来操作。
let str = 'hello 蛙人'
let str1 = str.substring(2)
下面 example 中,str 是一个字符串类型,然而它调用了 substring
办法,并将后果保留在了 str1 中,咱们晓得根本类型不是对象,咱们就会想,哎 它不是对象为什么能调用办法,其实 js 外部曾经实现了一系列的解决,当执行第二行代码时,拜访过程处于一种读取状态,也就是要从内存中读取这个字符串的值。那 js 外部是怎么解决的呢,看上面。
- 创立 String 类型的实例
- 在实例上调用指定的办法
- 最初销毁该实例
let str = new String('hello 蛙人')
let str1 = str.substring(2)
str1 = null
通过下面的加工后,根本字符串变的跟对象一样,下面这三个步骤也实用于 Boolean、Number
类型。
那么有的小伙伴就会纳闷,援用类型和根本包装类有什么不同呢,最次要的区别就是对象的生存期
。
- 援用类型:应用 new 操作符创立的援用类型实例,在执行流来到以后作用域之前始终都保留在内存中,
- 根本包装类型:只存在一行代码的执行霎时,而后立刻销毁
根本包装类意味着咱们不能在运行时为对象增加属性及办法,因为它们执行完后会立刻销毁
let str = '蛙人'
str.age = 23
console.log(str.age) // undefined
下面第二行代码中,为“蛙人“增加 age 属性,然而在上面打印发现是 undefined
,问题就在于,第二行代码执行完后立刻销毁,第三行代码再次创立 String 对象发现没有该 age 属性。