Skip to content

Commit fca3cb6

Browse files
committed
fixes in introduction and objects
1 parent e0dce22 commit fca3cb6

File tree

5 files changed

+43
-38
lines changed

5 files changed

+43
-38
lines changed

doc/ru/intro/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
**JavaScript Гарден** — это постоянно обновляющаяся и растущая документация по самым заковыристым темам языка JavaScript. В ней вы найдёте советы о том, как избежать распространённых ошибок и предсказать появление тех или иных багов. В документации подробно освещены проблемы оптимизации и нерекомендуемые практики с которыми, продираясь к глубинам языка, могут столкнуться даже просвещённые JavaScript-программисты.
44

5-
JavaScript Гарден **не** имеет цели научить вас языку JavaScript. Вам понадобится реальный опыт работы с языком чтобы понимать темы, рассматриваемые в этом руководстве. Если вам требуется изучить основы языка, пожалуйста внимательно ознакомьтесь с замечательным [руководством][1] на сайте Mozilla Developer Network.
5+
JavaScript Гарден **не cтавит** себе целью научить вас языку JavaScript. Вам понадобится реальный опыт работы с языком чтобы понимать темы, рассматриваемые в этом руководстве. Если вам требуется изучить основы языка, пожалуйста обратитесь к замечательному [руководством][1] на сайте Mozilla Developer Network.
66

77
[1]: https://developer.mozilla.org/en/JavaScript/Guide
88

doc/ru/object/forinloop.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,37 @@
11
## Цикл `for in`
22

3-
Как и оператор `in`, цикл `for in` проходит по всей цепочке прототипов обходя свойства объекта.
3+
Как и оператор `in`, цикл `for in` проходит по всей цепочке прототипов, обходя свойства объекта.
44

5-
> **Примечание:** Цикл `for in` **не** обходит те свойства объекта, у которых атрибут `enumerable` установлен в `false`; как пример - свойство `length` у массивов
5+
> **Примечание:** Цикл `for in` **не** обходит те свойства объекта, у которых внутренний атрибут `enumerable` установлен в `false`; как пример - свойство `length` у массивов
66
7-
// Испортим Object.prototype
7+
// Подпортим Object.prototype
88
Object.prototype.bar = 1;
99

1010
var foo = {moo: 2};
1111
for(var i in foo) {
1212
console.log(i); // печатает и bar и moo
1313
}
1414

15-
Так как изменить поведение цикла `for in` как такового не представляется возможным, то для фильтрации нежелательных свойств объекта внутри этого цикла используют метод [`hasOwnProperty`](#object.hasownproperty) из `Object.prototype`.
15+
Так как изменить поведение цикла `for in` как такового не представляется возможным, то для фильтрации нежелательных свойств объекта внутри этого цикла используется метод [`hasOwnProperty`](#object.hasownproperty) из `Object.prototype`.
1616

1717
> **Примечание:** Цикл `for in` всегда обходит всю цепочку прототипов полностью: таким образом, чем больше прототипов (слоёв наследования) в цепочке, тем медленнее работает цикл.
1818
1919
### Использование `hasOwnProperty` в качестве фильтра
2020

21-
// возьмём foo из примера выше
21+
// всё то же foo из примера выше
2222
for(var i in foo) {
2323
if (foo.hasOwnProperty(i)) {
2424
console.log(i);
2525
}
2626
}
2727

28-
Это единственная версия правильного использования цикла. Благодаря использованию `hasOwnProperty` будет выведено **только** свойство `moo`. Если же убрать `hasOwnProperty`, код становится нестабилен и могут возникнуть ошибки, особенно если кто-то изменил встроенные прототипы, такие как `Object.prototype`.
28+
Это единственно правильная версия использования такого цикла. За счёт использования `hasOwnProperty` будет выведено одно **только** свойство `moo`. Если же вы уберёте проверку `hasOwnProperty`, код станет нестабилен и, если кто-то позволил себе изменить прототипы встроенных типов, такие как `Object.prototype`, у вас возникнут непредвиденные ошибки.
2929

30-
Один из самых популярных фреймворков [Prototype][1] как раз этим и славится, и если вы его подключаете, то не забудьте использовать `hasOwnProperty` внутри цикла `for in`, иначе у вас гарантированно возникнут проблемы.
30+
Один из самых популярных фреймворков [Prototype][1] использует упомянутое расширение `Object.prototype` и если вы его подключаете — ни в коем случае не забывайте использовать `hasOwnProperty` внутри всех циклов `for in` иначе у вас гарантированно возникнут проблемы.
3131

3232
### Рекомендации
3333

34-
Рекомендация одна — **всегда** используйте `hasOwnProperty`. Пишите код, который будет в наименьшей мере зависеть от окружения, в котором он будет запущен — не стоит гадать, расширял кто-то прототипы или нет и используется ли в ней та или иная библиотека.
34+
Рекомендация одна — **всегда** используйте `hasOwnProperty`. Пишите код, который будет в наименьшей мере зависеть от окружения, в котором он будет запущен — не стоит гадать, расширял кто-то прототипы или нет и используется ли в нём та или иная библиотека.
3535

3636
[1]: http://www.prototypejs.org/
3737

doc/ru/object/general.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,19 @@
99
Foo.bar = 1;
1010
Foo.bar; // 1
1111

12-
Неверно считать, что числовые литералы нельзя использовать в роли объектов — это распространённое заблуждение. Его причиной является упущение в парсере JavaScript, благодаря которому применение *точечной нотации* к числу воспринимается им как литерал числа с плавающей точкой.
12+
Распростанено заблуждение, что числовые литералы нельзя использовать в роли объектов — оно неверно и зародилось из-за упущения в парсере JavaScript, благодаря которому применение *точечной нотации* к числу воспринимается им как литерал числа с плавающей точкой.
1313

1414
2.toString(); // вызывает SyntaxError
1515

16-
Есть несколько способов обойти этот недостаток и любой из них можно использовать для того, чтобы работать с числами, как с объектами:
16+
Есть несколько способов обойти этот недостаток и любой из них подойдёт, если нужно добиться от числа поведения объекта:
1717

1818
2..toString(); // вторая точка распознаётся корректно
1919
2 .toString(); // обратите внимание на пробел перед точкой
2020
(2).toString(); // двойка вычисляется заранее
2121

22-
### Объекты как тип данных
22+
### Объекты как хранилища данных
2323

24-
Объекты в JavaScript могут использоваться как [*хеш-таблицы*][1]: подавляющей частью состоят из именованных свойств (ключей), привязанных к значениям.
24+
Объекты в JavaScript могут использоваться и как [*хеш-таблицы*][1]: подавляющей частью они состоят из именованных свойств (ключей), привязанных к значениям.
2525

2626
Используя объектный литерал — нотацию `{}` — можно создать простой объект. Новый объект [наследуется](#object.prototype) от `Object.prototype` и не имеет [собственных свойств](#object.hasownproperty).
2727

@@ -34,7 +34,7 @@
3434

3535
Получить доступ к свойствам объекта можно двумя способами: используя либо точечную нотацию, либо запись квадратными скобками.
3636

37-
var foo = {name: 'Kitten'}
37+
var foo = {name: 'kitten'}
3838
foo.name; // kitten
3939
foo['name']; // kitten
4040

@@ -44,11 +44,11 @@
4444
foo.1234; // SyntaxError
4545
foo['1234']; // работает
4646

47-
Обе нотации идентичны по принципу работы одна лишь разница в том, что использование квадратных скобок позволяет устанавливать свойства динамически и использовать такие имена свойств, какие в других случаях могли бы привести к синтаксической ошибке.
47+
Обе нотации идентичны по принципу работы, одна лишь разница в том, что использование квадратных скобок позволяет устанавливать свойства динамически и использовать такие имена свойств, какие в других случаях могли бы привести к синтаксической ошибке.
4848

4949
### Удаление свойств
5050

51-
Единственный способ удалить свойство у объекта — использовать оператор `delete`; устанавливая свойство в `undefined` или `null`, вы только заменяете связанное с ним *значение*, но не удаляете *ключ*.
51+
Единственный способ полностью удалить свойство у объекта — использовать оператор `delete`; устанавливая свойство в `undefined` или `null`, вы только заменяете связанное с ним *значение*, но не удаляете *ключ*.
5252

5353
> **Замечание** от перев.: Если ссылок на значение больше нет, то сборщиком мусора удаляется и само значение, но ключ объекта при этом всё так же имеет новое значение.
5454
@@ -73,12 +73,12 @@
7373

7474
var test = {
7575
'case': 'Я — ключевое слово, поэтому меня надо записывать строкой',
76-
delete: 'Я тоже ключевое слово, так что я' // бросаю SyntaxError
76+
delete: 'Я тоже ключевое слово, и меня' // порождает SyntaxError
7777
};
7878

79-
Свойства объектов могут записываться как явно символами, так и в виде закавыченных строк. В связи с другим упущением в парсере JavaScript, этот код выбросит `SyntaxError` во всех версиях ранее ECMAScript 5.
79+
Ключи свойств объектов могут записываться как явно символами без кавычек, так и в виде закавыченных строк. В связи с другим упущением в парсере JavaScript, вышеприведённый код выбросит `SyntaxError` во всех версиях ранее ECMAScript 5.
8080

81-
Источником ошибки является факт, что `delete` — это *ключевое слово* и поэтому его необходимо записывать как *строчный литерал*: ради уверенности в том, что оно будет корректно опознано более старыми движками JavaScript.
81+
Источником ошибки является факт, что `delete` — это *ключевое слово* и поэтому его *необходимо* записывать как *строчный литерал*, ради уверенности в том, что оно будет корректно опознано более старыми движками JavaScript.
8282

8383
*От перев.:* И еще один пример в пользу строковой нотации, это относится к [JSON][2]:
8484

0 commit comments

Comments
 (0)