ES5 对字符串对象提供charAt()
方法,返回字符串给定位置的字符。该方法不能识别码点大于0xFFFF
的字符。
'abc'.charAt(0) // "a"
'?'.charAt(0) // "\uD842"
上面代码中,charAt()
方法返回的是 UTF-16 编码的第一个字节,实际上是无法显示的。
目前,有一个提案,提出字符串实例的at()
方法,可以识别 Unicode 编号大于0xFFFF
的字符,返回正确的字符。
'abc'.at(0) // "a"
'?'.at(0) // "?"
这个方法可以通过垫片库实现。