我正在参加「掘金·启航计划」
什么是基本包装类型
我们都听过基本类型与引用类型的数据,对于基本包装类型可能就有些懵懂了,那到底什么是 基本包装类型 呢?
其实基本包装类型与其他引用类型是相似的,也具有与各自的基本类型相应的行为。 ECMAScript 中提供了 3 个特殊的引用类型:Boolean、Number 和 String。
基本包装类型的实现原理
我们都知道,基本类型值不是对象,因此从逻辑上讲它们不应该有方法。但是我们在使用中发现,它们确实是有方法的,这又是为什么呢?
我们来看这样一个例子:
var s1 = "some text"
var s2 = s1.substring(2)
其实,访问过程处于一种读取模式,也就是要从内存中读取字符串的值,这个过程中后台自动完成了一下处理。
(1)创建 String 类型的一个实例 (2)在实例上调用指定的方法 (3)销毁这个实例
引用类型与基本包装类型的区别
他们之间最大的区别就是对象的生存期。
- 使用 new 操作符创建的引用类型实例,在执行流离开当前作用域之前都一直保存在内存中。
- 自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,之后被立即销毁。
这也就是说我们不能在运行时为基本类型的值添加属性和方法。所以一下代码执行有误。
var s1 = 'some text'
s1.color = 'red'
alert(s1.color) // undefined
需要注意的是,使用 new 调用基本包装类型的构造函数,与直接调用同名的转型函数是不一样的。
var value = '24'
var number = Number(value)
alert(typeof number) // 'number'
var obj = new Number(value)
alert(typeof obj) // 'object'
因此,我们不建议直接使用基本包装类型,尤其是 Boolean 与 Number。
而 String 类型,提供了很多方法,用于辅助完成对 ECMAScript 中字符串的解析和操作。
字符方法:
- charAt(): 返回给定位置的字符
- charCodeAt():返回给定位置的字符编码
字符串操作方法:
- concat():拼接字符
- slice():
- substr():
- substring():
字符串位置方法:
- indexOf()
- lastIndexOf()
trim():删除前置及后缀的所有空格
转换大小写:
- toLowerCase()
- toLocaleLowerCase()
- toUpperCase()
- toUpperCase()
模式匹配方法:
- match()
- search()
- replace()
- split()
比较字符串
- localeCompare():按字母表