Skip to content

Commit 70375c6

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 8ac5774 + 203a9c6 commit 70375c6

File tree

17 files changed

+34
-31
lines changed

17 files changed

+34
-31
lines changed

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Thank you for being kind enough to help out!
99

1010
## Testing locally
1111

12-
1. Run `npm run build.js` to build
12+
1. Run `npm run build` to build
1313
1. Run a webserver from the root of the repo to view
1414

1515
## Getting changes merged

doc/en/function/closures.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,12 +36,12 @@ Since it is not possible to reference or assign scopes in JavaScript, there is
3636
interact with it is via the two closures.
3737

3838
var foo = new Counter(4);
39-
foo.hack = function() {
39+
foo.hackFail = function() {
4040
count = 1337;
4141
};
4242

4343
The above code will **not** change the variable `count` in the scope of `Counter`,
44-
since `foo.hack` was not defined in **that** scope. It will instead create - or
44+
since `foo.hackFail` was not defined in **that** scope. It will instead create - or
4545
override - the *global* variable `count`.
4646

4747
### Closures Inside Loops

doc/en/function/scopes.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ which, while different in syntax, behave the same way.
220220
!function(){}()
221221
+function(){}()
222222
(function(){}());
223+
void function(){}();
223224
// and so on...
224225

225226
### In Conclusion

doc/en/object/general.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ There are a couple of workarounds that can be used to make number literals act
2020
as objects too.
2121

2222
2..toString(); // the second point is correctly recognized
23-
2 .toString(); // note the space left to the dot
23+
2 .toString(); // note the space left of the dot
2424
(2).toString(); // 2 is evaluated first
2525

2626
### Objects as a Data Type

doc/it/types/casting.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ una *conversione di tipo* **ovunque** sia possibile.
2525
Per evitare i problemi appena visti, l'uso
2626
dell'[operatore di uguaglianza stretta](#types.equality) è **altamente**
2727
raccomandato. Sebbene questo eviti molti dei comuni problemi, ci sono ancora
28-
molti ulteriori problemi che possono essere generati dal sistema debolemente
28+
molti ulteriori problemi che possono essere generati dal sistema debolmente
2929
tipizzato di JavaScript.
3030

3131
### Costruttori di tipi interni

doc/it/types/instanceof.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ esattamente lo stesso oggetto.
3434

3535
### In conclusione
3636

37-
L'operatore `instanceof` dovrebbe essere usto **solo** quando si ha a che fare
37+
L'operatore `instanceof` dovrebbe essere usato **solo** quando si ha a che fare
3838
con oggetti personalizzati creati dal programmatore, che provengono dallo
3939
stesso contesto JavaScript. Proprio come per l'operatore [`typeof`](#types.typeof),
4040
ogni altro tipo di utilizzo dovrebbe essere **evitato**.

doc/ru/array/constructor.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
arr[1]; // не определён, undefined
1616
1 in arr; // false, индекс не был установлен
1717

18-
Поведение, которое позволяет изначально установить только размер массива, может пригодиться лишь в нескольких случаях, таких как повторение строк, за счёт чего избегается использование цикла `for loop`.
18+
Поведение, которое позволяет изначально установить только размер массива, может пригодиться лишь в нескольких случаях, таких как повторение строк, за счёт чего избегается использование цикла `for`.
1919

2020
new Array(count + 1).join(stringToRepeat);
2121

doc/ru/object/general.md

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

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

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

doc/ru/object/hasownproperty.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
foo.hasOwnProperty('bar'); // false
1717
foo.hasOwnProperty('goo'); // true
1818

19-
Только используя hasOwnProperty можно гарантировать правильный результат при переборе свойств объекта. И **нет** иного способа для определения свойств, которые определены в *самом* объекте, а не где-то в цепочке его прототипов.
19+
Только используя `hasOwnProperty` можно гарантировать правильный результат при переборе свойств объекта. И **нет** иного способа для определения свойств, которые определены в *самом* объекте, а не где-то в цепочке его прототипов.
2020

2121
### `hasOwnProperty` как свойство
2222

@@ -38,4 +38,3 @@ JavaScript **не** резервирует свойство с именем `has
3838
### Заключение
3939

4040
**Единственным** способом проверить существование свойства у объекта является использование метода `hasOwnProperty`. При этом рекомендуется использовать этот метод в **каждом** [цикле `for in`](#object.forinloop) вашего проекта, чтобы избежать возможных ошибок с ошибочным заимствованием свойств из [прототипов](#object.prototype) родительских объектов. Также вы можете использовать конструкцию `{}.hasOwnProperty.call(...)` на случай, если кто-то вздумает расширить [прототипы](#object.prototype) встроенных объектов.
41-

doc/ru/object/prototype.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,19 @@
1010

1111
> **Замечание:** В результате выполнения конструкции `Bar.prototype = Foo.prototype` оба объекта будут делить друг с другом **один и тот же** прототип. Так что изменение прототипа одного из объектов повлечёт за собой изменение прототипа другого и наоборот — вряд ли это окажется тем, чего вы ожидали.
1212
13+
> **Замечание:** Для объявления наследования вместо `Bar.prototype = Object.create(Foo.prototype)` можно воспользоваться конструкций `Bar.prototype = new Foo()`, но у нее есть пару недостатков: 1) как правило требуется унаследовать только методы и свойства прототипа, а не создавать для этого новый объект; 2) создание объекта может требовать обязательные аргументы.
14+
15+
> **Примечание:** Метод `Object.create` отсутствует в IE8 и ниже, но его легко реализовать созданием своей такой функции или же можно подключить библиотеку для поддержки старых IE [*es5-shim*][5]
16+
1317
function Foo() {
1418
this.value = 42;
1519
}
16-
Foo.prototype = {
17-
method: function() {}
18-
};
20+
Foo.prototype.method = function() {}
1921

2022
function Bar() {}
2123

22-
// Установим значением прототипа Bar новый экземпляр Foo
23-
Bar.prototype = new Foo();
24+
// Зададим наследование от Foo
25+
Bar.prototype = Object.create(Foo.prototype);
2426
Bar.prototype.foo = 'Hello World';
2527

2628
// Убедимся, что Bar является действующим конструктором
@@ -81,4 +83,5 @@
8183
[2]: http://en.wikipedia.org/wiki/Monkey_patch
8284
[3]: http://prototypejs.org/
8385
[4]: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach
86+
[5]: https://github.com/es-shims/es5-shim
8487

doc/zh/object/prototype.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
JavaScript 不包含传统的类继承模型,而是使用 *prototype* 原型模型。
44

55
虽然这经常被当作是 JavaScript 的缺点被提及,其实基于原型的继承模型比传统的类继承还要强大。
6-
实现传统的类继承模型是很简单,但是实现 JavaScript 中的原型继承则要困难的多
6+
例如,很容易通过原型继承实现传统的类继承模型,但是反过来,通过传统的类继承模型来实现原型继承模型就困难得多
77
(It is for example fairly trivial to build a classic model on top of it, while the
88
other way around is a far more difficult task.)
99

doc/zhtw/core/eval.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
### 安全上的顧慮
3333

3434
`eval` 同樣有安全上的問題,因為所有的程式碼都可以被直接執行。
35-
而他不應去執行一串未知的字串或是來自不幸任的來源
35+
而他不應去執行一串未知的字串或是來自不信任的來源
3636

3737
### 結語
3838

doc/zhtw/function/general.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,19 +25,19 @@
2525

2626
由於 `var` 已經宣告變數 `foo` 在所有的程式碼執行之前。
2727
所以 `foo`已經在程式運行前就已經被定義過了。
28-
但是因為賦值只會在運行時去職情,所以在程式碼執行前,`foo` 的值還沒被宣告所以為 [undefined](#core.undefined)
28+
但是因為賦值只會在運行時去執行,所以在程式碼執行前,`foo` 的值還沒被宣告所以為 [undefined](#core.undefined)
2929

3030

3131
### 命名函式的賦值表達式
3232

33-
另一個特殊狀況就勢將一個命名函式賦值給一個變數
33+
另一個特殊狀況是將一個命名函式賦值給一個變數
3434

3535
var foo = function bar() {
3636
bar(); // 可以運行
3737
}
3838
bar(); // 錯誤:ReferenceError
3939

40-
`bar` 不可以在外部的區域被執行,因為它只有在 `foo` 的函式內才可以去執行
40+
`bar` 不可以在外部的區域被執行,因為它只有在 `foo` 的函式內才可以執行
4141
然而在 `bar` 內部還是可以看見。這是由於 JavaScript的 [命名處理](#function.scopes)所致。
42-
函式名在函式內 ** 可以去使用
42+
函式名在函式內 ** 可以使用
4343

doc/zhtw/function/this.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
## `this` 的工作原理
22

33
JavaScript 有移到完全部屬於其他語言處理 `this` 的處理機制。
4-
**** 種物同的情況下`this` 指向的個不相同
4+
**** 種不同的情況下`this` 指向的各不相同
55

66
### 全域變數
77

@@ -14,12 +14,12 @@ JavaScript 有移到完全部屬於其他語言處理 `this` 的處理機制。
1414

1515
foo();
1616

17-
這裡 `this` 也會指向 *全域* 對象
17+
這裡 `this` 也會指向 *全域* 物件
1818

1919
> **ES5 注意:** 在嚴格模式下,不存在全域變數。
2020
> `this` 將會是 `undefined`
2121
22-
### 方法調用
22+
### 呼叫一個方法
2323

2424
test.foo();
2525

doc/zhtw/object/forinloop.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@
2727
}
2828

2929
這個版本的程式碼是唯一正確的寫法。由於我們使用了 `hasOwnProperty`,這次 **** 輸出 `moo`
30-
如果不只用這個程式碼在原型物件中(比如 `Object.prototype`)被擴展可能會出錯。
30+
如果不使用這個程式碼在原型物件中(比如 `Object.prototype`)被擴展可能會出錯。
3131

32-
一個廣泛的模組 [Prototype][1]就礦展了圓型的 JavaScript 物件。
33-
因此,但這模組包含在頁面中時,不使用 `hasOwnProperty` 過濾的 `for in` 尋難免會出問題
32+
一個廣泛使用的舊函式庫 [Prototype][1]就擴展了原型的 JavaScript 物件。
33+
因此,當這個函式庫包含在頁面中時,不使用 `hasOwnProperty` 過濾的 `for in` 迴圈難免會出問題
3434

3535
### 總結
3636

doc/zhtw/object/hasownproperty.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## `hasOwnProperty`
22

3-
為了判斷一個物件是否包含 *自定義* 屬性而 *不是* [原形](#object.prototype)上的屬性,我們需要使用繼承 `Object.prototype``hasOwnProperty` 方法。
3+
為了判斷一個物件是否包含 *自定義* 屬性而 *不是* [原型](#object.prototype)上的屬性,我們需要使用繼承 `Object.prototype``hasOwnProperty` 方法。
44

55
> **注意:** 判斷一個屬性是否 `undefined`**不夠的**
66
> 因為一個屬性可能存在,但是它的值被設成 `undefined`
@@ -42,4 +42,4 @@ JavaScript **不會** 保護 `hasOwnProperty`被占用,因此如果碰到存
4242

4343
當檢查一個物件是否存在的時候, `hasOwnProperty`**唯一** 可用的方法。
4444
同時在使用 [`for in loop`](#object.forinloop)
45-
建議使用 `hasOwnProperty` 避免 [原型](#object.prototype)所帶來的干擾。
45+
建議使用 `hasOwnProperty` 避免 [原型](#object.prototype)所帶來的干擾。

doc/zhtw/object/prototype.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,14 +72,14 @@ JavaScript 不包含傳統繼承的模型,它使用的是*原型*模型。
7272

7373
一個經常發生的錯誤,那就是擴展 `Object.prototype` 或者是其他內建類型的原型物件。
7474

75-
這種技術叫做 [monkey patching][1] 並且會破壞 *封裝*。雖然被廣泛的應用到一些 Javascript 的架構,像是 [Prototype](http://prototypejs.org) , 但仍然沒有好的理由新增一個 *非標準* 的功能去搞亂內建型別
75+
這種技術叫做 [monkey patching][1] 並且會破壞 *封裝*。雖然被廣泛的應用到一些 Javascript 的架構,像是 [Prototype](http://prototypejs.org) , 但仍然沒有好的理由新增一個 *非標準* 的功能去搞亂內建型別
7676

7777
擴展內置類型的 **唯一** 理由是為了和新的 JavaScript 保持一致,比如說 [`Array.forEach`][3]
7878

7979
### 總結
8080

8181
在寫複雜的程式碼的時候,要 **充分理解** 所有程式繼承的屬性還有原型鏈。
82-
還要堤防原型鏈過長帶來的性能問題,並知道如何通過縮短原型鏈來提高性能。
82+
還要提防原型鏈過長帶來的性能問題,並知道如何通過縮短原型鏈來提高性能。
8383
絕對 **不要使用** `native prototype` 除非是為了和新的 JavaScript 引擎作兼容。
8484

8585
[1]: http://en.wikipedia.org/wiki/Monkey_patch

0 commit comments

Comments
 (0)