Skip to content

Commit f15521e

Browse files
committed
Merge pull request iliakan#201 from nicksp/patch-3
ES2015 Symbol: Reformatted text a bit
2 parents 7195bf0 + 3f120a3 commit f15521e

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

1-js/10-es-modern/8-symbol/article.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ alert( typeof sym ); // symbol
2525
```
2626

2727

28-
Каждый символ -- уникален. У функции `Symbol` есть необязательный аргумент "имя символа". Можно его использовать для описания символа, в целях отладки:
28+
Каждый символ -- уникален. У функции `Symbol` есть необязательный аргумент "имя символа". Его можно использовать для описания символа, в целях отладки:
2929

3030
```js
3131
//+ run
@@ -35,7 +35,7 @@ let sym = Symbol("name");
3535
alert( sym.toString() ); // Symbol(name)
3636
```
3737

38-
...Но при этом если у двух символов одинаковое имя, то это не значит, что они равны:
38+
...Но при этом, если у двух символов одинаковое имя, то это не значит, что они равны:
3939

4040
```js
4141
//+ run
@@ -46,7 +46,7 @@ alert( Symbol("name") == Symbol("name") ); // false
4646

4747
## Глобальные символы
4848

49-
Существует "глобальный реестр" символов, который позволяет, при необходимости, разделять символы между частями программы.
49+
Существует "глобальный реестр" символов, который позволяет, при необходимости, передавать символы между частями программы.
5050

5151
Для чтения (или создания, при отсутствии) "глобального" символа служит вызов `Symbol.for(имя)`.
5252

@@ -63,7 +63,7 @@ let name = Symbol.for("name");
6363
alert( Symbol.for("name") == name ); // true
6464
```
6565

66-
Вызов `Symbol.for` возвращает символ по имени. Обратным для него является вызов `Symbol.keyFor(sym)` позволяет получить по глобальному символу его имя:
66+
Вызов `Symbol.for` возвращает символ по имени. Обратным для него является вызов `Symbol.keyFor(sym)`, который позволяет получить по глобальному символу его имя:
6767

6868

6969
```js
@@ -92,7 +92,7 @@ alert( Symbol.keyFor(Symbol("name2")) ); // undefined, обычный симво
9292

9393
## Использование символов
9494

95-
Символы можно использовать в качестве имён для свойств объекта, вот так:
95+
Символы можно использовать в качестве имён для свойств объекта следующим образом:
9696

9797
```js
9898
//+ run
@@ -108,7 +108,7 @@ let user = {
108108
alert(user[isAdmin]); // true
109109
```
110110

111-
Особенность символов -- в том, что если в объект записать свойство-символ, то оно не участвует в итерации:
111+
Особенность символов в том, что если в объект записать свойство-символ, то оно не участвует в итерации:
112112

113113
```js
114114
//+ run
@@ -129,11 +129,11 @@ alert( user[Symbol.for("isAdmin")] );
129129

130130
Кроме того, свойство-символ недоступно, если обратиться к его названию: `user.isAdmin` не существует.
131131

132-
Зачем всё это, почему не просто использовать строки?
132+
Зачем всё это, почему просто не использовать строки?
133133

134134
Резонный вопрос. На ум могут прийти соображения производительности, так как символы -- это по сути специальные идентификаторы, они компактнее, чем строка. Но при современных оптимизациях объектов это редко имеет значение.
135135

136-
Самое широкое применение символов предусмотрено внутри самого стандарта JavaScript. В современном стандарте есть много системных символов. Их список есть в спецификации, в таблице [Well-known Symbols](http://www.ecma-international.org/ecma-262/6.0/index.html#table-1). В спецификации принято символы для краткости обозначать их как '@@имя', например `@@iterator`, но доступны они как свойства `Symbol`.
136+
Самое широкое применение символов предусмотрено внутри самого стандарта JavaScript. В современном стандарте есть много системных символов. Их список есть в спецификации, в таблице [Well-known Symbols](http://www.ecma-international.org/ecma-262/6.0/index.html#table-1). В спецификации для краткости символы принято обозначать как '@@имя', например `@@iterator`, но доступны они как свойства `Symbol`.
137137

138138
Например:
139139
<ul>
@@ -198,13 +198,13 @@ alert( Object.getOwnPropertyNames(obj) ); // iterator
198198

199199
<ul>
200200
<li>Символы -- новый примитивный тип, предназначенный для уникальных идентификаторов.</li>
201-
<li>Все символы уникальны, символы с одинаковым именем не равны друг другу.</li>
201+
<li>Все символы уникальны. Символы с одинаковым именем не равны друг другу.</li>
202202
<li>Существует глобальный реестр символов, доступных через метод `Symbol.for(name)`. Для глобального символа можно получить имя вызовом и `Symbol.keyFor(sym)`.</li>
203203
</ul>
204204

205205
Основная область использования символов -- это системные свойства объектов, которые задают разные аспекты их поведения. Поддержка у них пока небольшая, но она растёт. Системные символы позволяют разработчикам стандарта добавлять новые "особые" свойства объектов, при этом не резервируя соответствующие строковые значения.
206206

207207
Системные символы доступны как свойства функции `Symbol`, например `Symbol.iterator`.
208208

209-
Мы можем создавать и свои символы, использовать их в объектах. Записывать их как свойства `Symbol`, разумеется, нельзя, если нужен глобально доступный символ, то используется `Symbol.for(имя)`.
209+
Мы можем создавать и свои символы, использовать их в объектах. Записывать их как свойства `Symbol`, разумеется, нельзя. Если нужен глобально доступный символ, то используется `Symbol.for(имя)`.
210210

0 commit comments

Comments
 (0)