字符串的扩展
字符的 Unicode 表示法
JavaScript 允许采用uxxxx形式表示一个字符,其中xxxx表示字符的 Unicode 码点
ES6 对这一点做出了改进,只要将码点放入大括号,就能正确解读该字符
codePointAt()
JavaScript 内部,字符以 UTF-16 的格式储存,每个字符固定为2个字节
对于这种4个字节的字符,charAt方法无法读取整个字符,charCodeAt方法只能分别返回前两个字节和后两个字节的值
ES6 提供了codePointAt方法,能够正确处理 4 个字节储存的字符,返回一个字符的码点。
对于那些两个字节储存的常规字符,它的返回结果与charCodeAt方法相同
codePointAt方法返回的是码点的十进制值,如果想要十六进制的值,可以使用toString方法转换一下
String.fromCodePoint()
ES5 提供String.fromCharCode方法,用于从码点返回对应字符,但是这个方法不能识别 32 位的 UTF-16 字符
ES6 提供了String.fromCodePoint方法,可以识别大于0xFFFF的字符,弥补了String.fromCharCode方法的不足
如果String.fromCodePoint方法有多个参数,则它们会被合并成一个字符串返回
字符串的遍历器接口
ES6 为字符串添加了遍历器接口,使得字符串可以被for...of循环遍历
这个遍历器最大的优点是可以识别大于0xFFFF的码点,传统的for循环无法识别这样的码点
at()
ES5 对字符串对象提供charAt方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF的字符
有一个提案,提出字符串实例的at方法,可以识别 Unicode 编号大于0xFFFF的字符,返回正确的字符
有一个提案