字符unicode表示法

String.codePointAt()

ES6提供了codePointAt方法,能够正确处理4个字节存储的字符,返回一个字符的码点。

let s = '𠮷a';
for(let ch of s){
  console.log(ch.chodePointAt(0).toString(16));
}
// 20bb7
// 61

String.fromCodePoint()

正好与codePointAt方法相反

字符串遍历接口

ES6为字符串添加了遍历接口,🙆字符串可以由for...of循环遍历。可以识别大于0xFFFF的码点,传统的for循环无法识别。

#at()
ES5对字符串对象提供了charAt方法,返回字符串给定位置的字符,该方法不能识别码点大于0xFFFF。

目前有一个提案提出字符串实例的at方法,可以识别Unicode编码大于0xFFFF的字符,返回正确的字符。
'abc'.at(0) // 'a'
'𠮷'.at(0) // '𠮷'
这个方法可以通过垫片库实现。