1
0
mirror of https://github.com/ruanyf/es6tutorial.git synced 2025-05-28 21:32:20 +00:00

docs(string): delete String.prototype.at() #736

This commit is contained in:
ruanyf 2018-08-15 12:01:57 +08:00
parent 0f1abfca5a
commit 677621fe33

View File

@ -169,26 +169,6 @@ for (let i of text) {
上面代码中,字符串`text`只有一个字符,但是`for`循环会认为它包含两个字符(都不可打印),而`for...of`循环会正确识别出这一个字符。
## at()
ES5 对字符串对象提供`charAt`方法,返回字符串给定位置的字符。该方法不能识别码点大于`0xFFFF`的字符。
```javascript
'abc'.charAt(0) // "a"
'𠮷'.charAt(0) // "\uD842"
```
上面代码中的第二条语句,`charAt`方法期望返回的是用2个字节表示的字符但汉字“𠮷”占用了4个字节`charAt(0)`表示获取这4个字节中的前2个字节很显然这是无法正常显示的。
目前,有一个提案,提出字符串实例的`at`方法,可以识别 Unicode 编号大于`0xFFFF`的字符,返回正确的字符。
```javascript
'abc'.at(0) // "a"
'𠮷'.at(0) // "𠮷"
```
这个方法可以通过[垫片库](https://github.com/es-shims/String.prototype.at)实现。
## normalize()
许多欧洲语言有语调符号和重音符号。为了表示它们Unicode 提供了两种方法。一种是直接提供带重音符号的字符,比如`Ǒ`\u01D1。另一种是提供合成符号combining character即原字符与重音符号的合成两个字符合成一个字符比如`O`\u004F`ˇ`\u030C合成`Ǒ`\u004F\u030C