根本包装类
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 = 23console.log(str.age) // undefined
下面第二行代码中,为“蛙人“增加 age 属性,然而在上面打印发现是 undefined
,问题就在于,第二行代码执行完后立刻销毁,第三行代码再次创立String对象发现没有该age属性。