From 54e341c59ee0cb2bee5f3e9d826677cc4dc98f71 Mon Sep 17 00:00:00 2001 From: CalvinChen Date: Wed, 1 May 2013 11:40:30 +0800 Subject: [PATCH 001/189] fix typing error. --- doc/zh/object/hasownproperty.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/zh/object/hasownproperty.md b/doc/zh/object/hasownproperty.md index b395c1b9..2466f8c5 100755 --- a/doc/zh/object/hasownproperty.md +++ b/doc/zh/object/hasownproperty.md @@ -35,7 +35,7 @@ JavaScript **不会**保护 `hasOwnProperty` 被非法占用,因此如果一 foo.hasOwnProperty('bar'); // 总是返回 false - // 使用其它对象的 hasOwnProperty,并将其上下为设置为foo + // 使用其它对象的 hasOwnProperty,并将其上下文设置为foo ({}).hasOwnProperty.call(foo, 'bar'); // true ###结论 From 6c4f5ce7c22616a3f238227844b4eae65f620a2b Mon Sep 17 00:00:00 2001 From: CalvinChen Date: Wed, 1 May 2013 11:41:33 +0800 Subject: [PATCH 002/189] fix typing error. --- doc/zh/object/forinloop.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/zh/object/forinloop.md b/doc/zh/object/forinloop.md index ea7d389d..a0360e7e 100755 --- a/doc/zh/object/forinloop.md +++ b/doc/zh/object/forinloop.md @@ -30,7 +30,7 @@ 如果不使用 `hasOwnProperty`,则这段代码在原生对象原型(比如 `Object.prototype`)被扩展时可能会出错。 一个广泛使用的类库 [Prototype][1] 就扩展了原生的 JavaScript 对象。 -因此,但这个类库被包含在页面中时,不使用 `hasOwnProperty` 过滤的 `for in` 循环难免会出问题。 +因此,当这个类库被包含在页面中时,不使用 `hasOwnProperty` 过滤的 `for in` 循环难免会出问题。 ###总结 From c12f52cdaa02ecb23e4cbfcc1a696de4778ef25e Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Mon, 6 May 2013 20:49:53 +0900 Subject: [PATCH 003/189] Fix typo in doc/ja/array/constructor --- doc/ja/array/constructor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ja/array/constructor.md b/doc/ja/array/constructor.md index 817808b7..17b64718 100644 --- a/doc/ja/array/constructor.md +++ b/doc/ja/array/constructor.md @@ -21,5 +21,5 @@ ### 終わりに -`Array`コンストラクターの使用は出来る限り避けてください。リテラルが当然望ましい形です。それらは、短かく明快な文法にもってるいる為に、コードの可読性を高めてくれます。 +`Array`コンストラクターの使用は出来る限り避けてください。リテラルが当然望ましい形です。それらは、短かく明快な文法をもっている為に、コードの可読性を高めてくれます。 From e85f42a2660032f8c9583d718d14a44761c3a629 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Mon, 6 May 2013 21:45:34 +0900 Subject: [PATCH 004/189] Fix typo in doc/ja/core/semicolon --- doc/ja/core/semicolon.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ja/core/semicolon.md b/doc/ja/core/semicolon.md index 72b00011..d3bf4a24 100644 --- a/doc/ja/core/semicolon.md +++ b/doc/ja/core/semicolon.md @@ -18,7 +18,7 @@ JavaScriptはセミコロン無しの言語ではありません。実際に、 ### どのように動くか -以下のコードはセミコロン無いので、パーサーはどこに挿入するか決めなくてはなりません。 +以下のコードはセミコロンが無いので、パーサーはどこにセミコロンを挿入するか決めなくてはなりません。 (function(window, undefined) { function test(options) { From 5e5a5da4bb1176da8115afed9e60dc353b3c0540 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Mon, 6 May 2013 21:57:28 +0900 Subject: [PATCH 005/189] Fix typo in doc/ja/core/delete --- doc/ja/core/delete.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ja/core/delete.md b/doc/ja/core/delete.md index 632dc142..8e669253 100644 --- a/doc/ja/core/delete.md +++ b/doc/ja/core/delete.md @@ -72,4 +72,4 @@ IE(最低でも6-8で)は多少のバグがある為に、上記のコードは ### 終わりに -`delete`演算子は、しばしば予期せぬ挙動をします。唯一安全な仕様方法は通常のオブジェクトに明示的に設定されたプロパティを扱う場合だけです。 +`delete`演算子は、しばしば予期せぬ挙動をします。唯一安全な使用方法は通常のオブジェクトに明示的に設定されたプロパティを扱う場合だけです。 From 1de7d16038520081b2d7c32929c06251bccd26ab Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Mon, 6 May 2013 21:33:16 +0900 Subject: [PATCH 006/189] Standardize a word for "strict" in doc/ja --- doc/ja/types/casting.md | 2 +- doc/ja/types/equality.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ja/types/casting.md b/doc/ja/types/casting.md index 42561de7..2493b8ea 100644 --- a/doc/ja/types/casting.md +++ b/doc/ja/types/casting.md @@ -19,7 +19,7 @@ JavaScriptは*弱い型付け*の言語なので、可能な**限り**に*型強 > **ES5での注意点:** `0`から始まるNumberリテラルは8進数(基数が8)として解釈されます。 > このような8進数のサポートはECMAScript5のstrict modeでは**削除されました**。 -上記の自体を避ける為に、[厳格等価演算子](#types.equality)を使用する事を**強く**推奨します。また、これはたくさんある落し穴を避けますが、それでもまだJavaScriptの弱い型付けシステムから発生する色々な課題が残っています。 +上記の自体を避ける為に、[厳密等価演算子](#types.equality)を使用する事を**強く**推奨します。また、これはたくさんある落し穴を避けますが、それでもまだJavaScriptの弱い型付けシステムから発生する色々な課題が残っています。 ### 組み込み型のコンストラクタ diff --git a/doc/ja/types/equality.md b/doc/ja/types/equality.md index 617d38af..f681e6c2 100644 --- a/doc/ja/types/equality.md +++ b/doc/ja/types/equality.md @@ -54,5 +54,5 @@ JavaScriptは*弱い型付け*を特徴としています。これは等価演 ### 終わりに -**厳格等価**演算子だけを使用することを特に推奨します。型を強制的に型変換する場合は[explicitly](#types.casting)であるべきで、言語自体の複雑な変換ルールが残っているべきではありません。 +**厳密等価**演算子だけを使用することを特に推奨します。型を強制的に型変換する場合は[explicitly](#types.casting)であるべきで、言語自体の複雑な変換ルールが残っているべきではありません。 From 86b04baefa7468b31b883152b81512d7afc27270 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Mon, 6 May 2013 21:05:04 +0900 Subject: [PATCH 007/189] Improve expression in doc/ja/object/prototype --- doc/ja/object/prototype.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/ja/object/prototype.md b/doc/ja/object/prototype.md index c188ce85..4a5ad300 100644 --- a/doc/ja/object/prototype.md +++ b/doc/ja/object/prototype.md @@ -10,7 +10,7 @@ JavaScriptはプロトタイプベースが採用されている唯一の広範 > **注意:** 単に`Bar.prototype = Foo.prototype`を使った場合、両方のオブジェクトは、 > **同じ**プロトタイプを共有する事になります。その為、片方のオブジェクトのプロトタイプの変更は -> もう一方のオブジェクトに影響します。大部分の場合、このような影響を及ぼしたく無いと思います。 +> もう一方のオブジェクトに影響します。殆どの場合、このような影響を及ぼしたく無いと思います。 function Foo() { this.value = 42; From 3513186117d63ca20f7dc3768cc2f887716fba38 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Mon, 6 May 2013 22:15:10 +0900 Subject: [PATCH 008/189] Improve expression in doc/ja/other/timeouts Clarify "don't have to" or "must not" in japanese. I guess origin looks like "must not" than "don't have to". --- doc/ja/other/timeouts.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ja/other/timeouts.md b/doc/ja/other/timeouts.md index a5a73f9c..9a346c1a 100644 --- a/doc/ja/other/timeouts.md +++ b/doc/ja/other/timeouts.md @@ -80,7 +80,7 @@ JavaScriptは非同期なので、`setTimeout`と`setInterval`関数を使って `setTimeout`と`setInterval` は、第一引数に文字列を取る事が可能です。この仕様は内部で`eval`を使用する為に、**絶対に**使うべきではありません。 -> **注意点:** タイムアウト関数はECMAScript標準では制定されて**いない**為に +> **注意点:** タイムアウト関数はECMAScript標準では制定されて**いない**為、 > 文字列を引数にした場合に厳密な動作は色々なJavaScript実装により異なります。 > 例えば、MicrosoftのJScriptは`eval`の代わりに`Function`コンストラクターを > 使用します。 @@ -117,7 +117,7 @@ JavaScriptは非同期なので、`setTimeout`と`setInterval`関数を使って ### 終りに -`setTimeout`や`setInterval`のパラメーターに文字列を使用する事は**絶対**するべきではありません。引数が関数に呼び出される必要がある場合**本当**に悪いコードの明確なサインになります。実際の呼び出しには*匿名関数*を渡すべきです。 +`setTimeout`や`setInterval`のパラメーターに文字列を用いては**いけません**。引数が関数に呼び出される必要がある場合**本当**に悪いコードの明確なサインになります。実際の呼び出しには*匿名関数*を渡すべきです。 さらに、`setInterval`の使用はスケジューラーがJavaScriptの実行によってブロックされないので、避けるべきでしょう。 From bd207b50809b3fac02aac3fde5a93bbe531596ce Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Mon, 6 May 2013 21:54:27 +0900 Subject: [PATCH 009/189] Improve translation in doc/ja/core/delete * Update to d9aeb54a3fc9e08db17f4dfa62fe045b9bdd3c9d modifying * Standardize a japanese word for "delete" in this file --- doc/ja/core/delete.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/ja/core/delete.md b/doc/ja/core/delete.md index 8e669253..424cd336 100644 --- a/doc/ja/core/delete.md +++ b/doc/ja/core/delete.md @@ -23,7 +23,7 @@ ### 明示的なプロパティ -普通にプロパティを消去できる方法が存在します:プロパティを明示的に設定するのです。 +明示的にプロパティを設定することが、通常通りの消去を可能にします。 // プロパティを明示的に設定する var obj = {x: 1}; @@ -33,7 +33,7 @@ obj.x; // undefined obj.y; // undefined -上記の例の中で、`obj.x`と`obj.y`はそれぞれ`DontDelete`属性が無い為に削除できます。これが下記の例でも動作する理由です。 +上記の例の中で、`obj.x`と`obj.y`はそれぞれ`DontDelete`属性が無い為に消去できます。これが下記の例でも動作する理由です。 // IE以外では、これも動作する var GLOBAL_OBJECT = this; @@ -49,7 +49,7 @@ IE(最低でも6-8で)は多少のバグがある為に、上記のコードは ### 関数の引数と組み込み引数 -関数の通常の引数である、[`arguments` object](#function.arguments)と組み込みのプロパティもまた、`DontDelete`が設定されています。 +関数の通常の引数である、[`arguments` objects](#function.arguments)と組み込みのプロパティもまた、`DontDelete`が設定されています。 // 関数の引数とプロパティ: (function (x) { From 4b38372b4fb92b33c66fbd323485e09f1ae96d41 Mon Sep 17 00:00:00 2001 From: Rex Li Date: Wed, 8 May 2013 00:15:39 +0800 Subject: [PATCH 010/189] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=96=87=E5=AD=97?= =?UTF-8?q?=E9=8C=AF=E8=AA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上面的程式中, foo 會執行一次然後被阻塞了義分鐘 上面的程式中, foo 會執行一次然後被阻塞了一分鐘 --- doc/zhtw/other/timeouts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/zhtw/other/timeouts.md b/doc/zhtw/other/timeouts.md index bd07f86a..a72d86fb 100644 --- a/doc/zhtw/other/timeouts.md +++ b/doc/zhtw/other/timeouts.md @@ -40,7 +40,7 @@ } setInterval(foo, 1000); -上面的程式中, `foo` 會執行一次然後被阻塞了義分鐘 +上面的程式中, `foo` 會執行一次然後被阻塞了一分鐘 在 `foo` 被阻塞的時候 `setInterval` 還是會組織將對回傳函式的調用。因此當第一次 `foo` 函式調用結束時,已經有 **10** 次函式的調用在等待執行。 From 6662d9cf2d276a29805ae7cf17f5d6ad0b96f904 Mon Sep 17 00:00:00 2001 From: Naomi Date: Mon, 24 Jun 2013 15:20:52 -0500 Subject: [PATCH 011/189] Add a `.bind` solution for setTimeout examples --- doc/en/function/closures.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/en/function/closures.md b/doc/en/function/closures.md index 76f2d078..69d401b6 100644 --- a/doc/en/function/closures.md +++ b/doc/en/function/closures.md @@ -96,3 +96,10 @@ above. })(i), 1000) } +There's yet another way to accomplish this by using `.bind`, which can bind +a `this` context and arguments to function. It behaves identially to the code +above + + for(var i = 0; i < 10; i++) { + setTimeout(console.log.bind(console, i), 1000); + } From 202eda527eaccd3ca7732d89dbdbc91ed7f94977 Mon Sep 17 00:00:00 2001 From: piecioshka Date: Sat, 3 Aug 2013 18:23:56 +0200 Subject: [PATCH 012/189] delete english translation from polish --- doc/pl/other/timeouts.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/pl/other/timeouts.md b/doc/pl/other/timeouts.md index 06c47114..73456bd7 100644 --- a/doc/pl/other/timeouts.md +++ b/doc/pl/other/timeouts.md @@ -2,8 +2,6 @@ Ponieważ JavaScript jest asynchroniczny, istnieje możliwość zaplanowania wykonania funkcji przy użyciu funkcji `setTimeout` i `setInterval`. -Since JavaScript is asynchronous, it is possible to schedule the execution of a -function by using the `setTimeout` and `setInterval` functions. > **Note:** Funkcje czasowe nie są częścią standardu ECMAScript. Jest to część > standardu [DOM][1]. From 5ee1058524e86204d1e6313fecef57ad45b504b3 Mon Sep 17 00:00:00 2001 From: qiangtou Date: Mon, 12 Aug 2013 22:51:59 +0800 Subject: [PATCH 013/189] =?UTF-8?q?=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修正一处拼写错误 --- doc/zh/object/hasownproperty.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/zh/object/hasownproperty.md b/doc/zh/object/hasownproperty.md index b395c1b9..2466f8c5 100755 --- a/doc/zh/object/hasownproperty.md +++ b/doc/zh/object/hasownproperty.md @@ -35,7 +35,7 @@ JavaScript **不会**保护 `hasOwnProperty` 被非法占用,因此如果一 foo.hasOwnProperty('bar'); // 总是返回 false - // 使用其它对象的 hasOwnProperty,并将其上下为设置为foo + // 使用其它对象的 hasOwnProperty,并将其上下文设置为foo ({}).hasOwnProperty.call(foo, 'bar'); // true ###结论 From 0c8bbc7c28a9f6bcdb53310c4272a02b588437ad Mon Sep 17 00:00:00 2001 From: John Doe Date: Sun, 15 Sep 2013 10:10:26 -0400 Subject: [PATCH 014/189] Fixed typo. --- doc/en/function/scopes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/en/function/scopes.md b/doc/en/function/scopes.md index 879e1e8a..28caddbd 100644 --- a/doc/en/function/scopes.md +++ b/doc/en/function/scopes.md @@ -206,7 +206,7 @@ this problem can easily be avoided with the help of *anonymous wrappers*. Unnamed functions are considered [expressions](#function.general); so in order to -being callable, they must first be evaluated. +be callable, they must first be evaluated. ( // evaluate the function inside the parentheses function() {} From 59e2dea0e2ba636dea1a237059894f1726e762a6 Mon Sep 17 00:00:00 2001 From: FreedomKnight Date: Fri, 27 Sep 2013 23:58:33 +0800 Subject: [PATCH 015/189] fixed incorrect chracter and translastion for zhtw --- doc/zhtw/object/general.md | 9 +++------ doc/zhtw/object/prototype.md | 8 ++++---- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/doc/zhtw/object/general.md b/doc/zhtw/object/general.md index ebee40d7..01c98bc5 100644 --- a/doc/zhtw/object/general.md +++ b/doc/zhtw/object/general.md @@ -21,9 +21,9 @@ ### 物件做為數據類型 -JavaScript 的物件可以作為 [*Hashmaps*][1]使用,主要用來保存命名的建與值的對應關係。 +JavaScript 的物件可以作為 [*Hashmaps*][1]使用,主要用來保存命名的鍵與值的對應關係。 -使用物件的字面語法 - `{}` - 可以創建一個簡單的物件。 這個新創建的物件從 `Object.prototype` [繼承](#object.prototype),下面,沒有任何 [字定義屬性](#object.hasownproperty)。 +使用物件的字面語法 - `{}` - 可以創建一個簡單的物件。 這個新創建的物件從 `Object.prototype` [繼承](#object.prototype),下面,沒有任何 [自定義屬性](#object.hasownproperty)。 var foo = {}; // 一個空的物件 @@ -44,10 +44,7 @@ JavaScript 的物件可以作為 [*Hashmaps*][1]使用,主要用來保存命 foo.1234; // SyntaxError foo['1234']; // works -兩種語法是相等的,但是中括號在下面兩個情況依然有效 - -- 動態設定屬性 -- 屬性不是一個有較的變數名 +兩種語法是相等的,唯一的差別是,使用中括號允許你動態的設定屬性,使用點操作不允許屬性為變數,否則會造成語法錯誤 ### 刪除屬性 diff --git a/doc/zhtw/object/prototype.md b/doc/zhtw/object/prototype.md index 29d714b7..eab6f8d3 100644 --- a/doc/zhtw/object/prototype.md +++ b/doc/zhtw/object/prototype.md @@ -1,6 +1,6 @@ ## Prototype -JavaScript 不包含原本繼承的模型。然而它使用的是 *prototypal* 原型。 +JavaScript 不包含原本繼承的模型。然而它使用的是*原型*模型*。 然而常常有人提及 JavaScript 的缺點,就是基於原本繼承模型比類繼承更強大。 現實傳統的類繼承模型是很簡單。但是在 JavaScript 中實現元繼承則要困難很多。 @@ -51,7 +51,7 @@ JavaScript 不包含原本繼承的模型。然而它使用的是 *prototypal* 當查詢一個物件的屬性時,JavaScript 會 **向上** 查詢,直到查到指定名稱的屬性為止。 -如果他查到原型鏈的頂部 - 也就是 `Object.prototype` - 但是仍然每有指定的屬定,就會返回 [undefined](#core.undefined)。 +如果他查到原型鏈的頂部 - 也就是 `Object.prototype` - 但是仍然沒有指定的屬定,就會返回 [undefined](#core.undefined)。 ### 原型屬性 @@ -70,9 +70,9 @@ JavaScript 不包含原本繼承的模型。然而它使用的是 *prototypal* ### 擴展 Native Prototype -一個經常錯誤使用的特定,那就是擴展 `Object.prototype` 或者是其他內置類型的原型物件。 +一個經常發生的錯誤,那就是擴展 `Object.prototype` 或者是其他內建類型的原型物件。 -這種技術叫做 [monkey patching][1] 並且會破壞 *封裝*。雖然被廣泛的應用到一些 Javascript 的架構,但是我仍然認為內置類型添加是一個 *非標準* 的函式的好方法 +這種技術叫做 [monkey patching][1] 並且會破壞 *封裝*。雖然被廣泛的應用到一些 Javascript 的架構,像是 [Prototype](http://prototypejs.org) , 但仍然沒有好的理由新增一個 *非標準* 的功能去搞亂內建型別 擴展內置類型的 **唯一** 理由是為了和新的 JavaScript 保持一致,比如說 [`Array.forEach`][3] From 230164d4bd892c376b2e6b21df034b5d1a1ddfca Mon Sep 17 00:00:00 2001 From: tombatossals Date: Tue, 8 Oct 2013 19:33:38 +0200 Subject: [PATCH 016/189] Some syntax check --- doc/es/object/general.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/es/object/general.md b/doc/es/object/general.md index 90bc39e0..29319d64 100644 --- a/doc/es/object/general.md +++ b/doc/es/object/general.md @@ -26,7 +26,7 @@ literales númericos actúen como objetos. ### Objetos como un tipo de datos Los objetos en JavaScript también pueden ser utilizados como una Tabla Hash o conocido como [*Hashmap*][1] en inglés, consisten -principalmente en nombres de propiedades asignadoles valores a estos. +principalmente en nombres de propiedades, y asignándoles valores a éstas. El uso de un objeto literal - con notación `{}` - puede crear un objeto plano. Este nuevo objeto [heredado](#object.prototype) desde `Object.prototype` @@ -93,7 +93,7 @@ de `SyntaxError` antes de ECMAScript 5. Este error se debe al `eliminar` una *keyword*; por lo tanto, debe ser anotado como un *string literal* para asegurarse que será interpretado correctamente -por diversos motorores de JavaScript. +por diversos motores de JavaScript. [1]: http://en.wikipedia.org/wiki/Hashmap From eecc0877648b7072de0df5fe4d7213fd14006da8 Mon Sep 17 00:00:00 2001 From: tombatossals Date: Tue, 8 Oct 2013 22:00:42 +0200 Subject: [PATCH 017/189] Grammar and syntax corrections on the spanish translation --- doc/es/object/prototype.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/es/object/prototype.md b/doc/es/object/prototype.md index ac654c75..363c4d48 100644 --- a/doc/es/object/prototype.md +++ b/doc/es/object/prototype.md @@ -4,12 +4,12 @@ JavaScript no posee en sus características un sistema clásico de herencia, sin utiliza un *prototipo* para esto. Si bien a menudo se considera uno de los puntos débiles de JavaScript, el -modelo de herecia prototipado es de hecho más poderoso que el modelo clásico. -Por ejemplo, es bastante trivial construir un modelo clásico en la parte superior del mismo, -mientras esto es una tarea mucho más difícil. +modelo de herencia prototipado es de hecho más poderoso que el modelo clásico. +Por ejemplo, es bastante trivial construir un modelo clásico a partir del modelo prototipado, +mientras que al contrario es una tarea mucho más difícil. Debido al hecho que JavaScript es básicamente el único lenguaje que utiliza -apliamente la herencia prototipada, se necesita algo de tiempo para adaptarse a +ampliamente la herencia prototipada, se necesita algo de tiempo para adaptarse a las diferencias entre los dos modelos. La primera gran diferencia es que la herencia en JavaScript se realiza usando @@ -83,30 +83,30 @@ la creación dinámica de cadena de prototipos. ### Rendimiento El tiempo tomado en la búsqueda de propiedades es alta y la cadena de prototipo puede -presentar un impacto negativo critico en el rendimiento en partes del código. Además, -si ha tratado de acceder a propiedades que no existen este saltara a la cadena de prototipo. +presentar un impacto negativo crítico en el rendimiento en partes del código. Además, +si ha tratado de acceder a propiedades que no existen, esto provoca que se recorra la cadena de prototipo completa. Además, al recorrer en [iteración](#object.forinloop) las propiedades de un objeto -y **cada** propiedad será encontrada en la cadena de prototipo de manera ennumerada. +, **cada** propiedad encontrada en la cadena de prototipo será enumerada. ### Extensión de prototipos nativos Una mala característica que se suele utilizar para extender `Object.prototype` o cualquier otro prototipo construido. -Esta técnica es conocida en inglés como [monkey patching][1] ya que *encapsula* lo que se interrumpe en el código. +Esta técnica es conocida en inglés como [monkey patching][1] y rompe la *encapsulación* del código. Si bien es utilizado en frameworks como [Prototype][2], todavía no existen buenas razones para adoptarlo o integrarlo como tipos de dato o como funcionalidad no estándar. -La **única** buena razón para extender un prototipo es acondicionarlo a nuevas -características en motores de JavaScript; por ejemplo, +La **única** razón coherente para extender un prototipo es para adaptarle nuevas +características de los motores JavaScript más modernos; por ejemplo, [`Array.forEach`][3]. ### En conclusión Se **debe** entender por completo el módelo de herencia prototipado antes de -escribir código complejo que lo utlilice. Además, observe la longitud de la -cadena de prototipo y modificala si es necesario para evitar posibles problemas de +escribir código complejo que lo utilice. Además, observe la longitud de la +cadena de prototipo y modifíquela si es necesario para evitar posibles problemas de rendimiento. Con relación a los prototipos nativos, estos **nunca** deben ser extendidos a menos que sea para mantener la compatibilidad con nuevas características de JavaScript. From 4ace5788de8ce7661ab1741e253c9ace81e4edf2 Mon Sep 17 00:00:00 2001 From: Tim Ruffles Date: Wed, 9 Oct 2013 20:23:57 +0100 Subject: [PATCH 018/189] replace defined with declared for more clarity [#151] --- doc/en/function/general.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/en/function/general.md b/doc/en/function/general.md index b2788e46..7e1c51c7 100644 --- a/doc/en/function/general.md +++ b/doc/en/function/general.md @@ -26,7 +26,7 @@ This example assigns the unnamed and *anonymous* function to the variable `foo`. var foo = function() {}; Due to the fact that `var` is a declaration that hoists the variable name `foo` -before the actual execution of the code starts, `foo` is already defined when +before the actual execution of the code starts, `foo` is already declared when the script gets executed. But since assignments only happen at runtime, the value of `foo` will default From e142edf6fb4cbf2fa0d66fe47ef517e8b2afb70d Mon Sep 17 00:00:00 2001 From: Tim Ruffles Date: Wed, 9 Oct 2013 20:30:44 +0100 Subject: [PATCH 019/189] fix typo [#125] --- doc/en/object/hasownproperty.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/doc/en/object/hasownproperty.md b/doc/en/object/hasownproperty.md index 03e3feea..1ba58f66 100644 --- a/doc/en/object/hasownproperty.md +++ b/doc/en/object/hasownproperty.md @@ -44,7 +44,8 @@ necessary to use an *external* `hasOwnProperty` to get correct results. // Use another Object's hasOwnProperty and call it with 'this' set to foo ({}).hasOwnProperty.call(foo, 'bar'); // true - // It's also possible to use the hasOwnProperty property from the Object property for this purpose + // It's also possible to use hasOwnProperty from the Object + // prototype for this purpose Object.prototype.hasOwnProperty.call(foo, 'bar'); // true From a6572971024f6fe0ffa6febf754e0de74660304d Mon Sep 17 00:00:00 2001 From: Tim Ruffles Date: Wed, 9 Oct 2013 21:04:38 +0100 Subject: [PATCH 020/189] Update README to mention all contributors via link [128] --- README.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6371eb25..2d4339bb 100644 --- a/README.md +++ b/README.md @@ -15,12 +15,9 @@ the excellent [guide][1] on the Mozilla Developer Network. ### The authors This guide is the work of two lovely Stack Overflow users, [Ivo Wetzel][6] -(Writing) and [Zhang Yi Jiang][5] (Design). - -### Contributors - - - [Caio Romão][8] (Spelling corrections) - - [Andreas Blixt][9] (Language corrections) +(Original English Language Version) and [Zhang Yi Jiang][5] (Design), and +[many others](https://github.com/BonsaiDen/JavaScript-Garden/graphs/contributors) +who've worked hard to provide translations or fixes. ### License From ae291a4002602ad217050fc26032cb81b07b7680 Mon Sep 17 00:00:00 2001 From: Tim Ruffles Date: Thu, 24 Oct 2013 14:59:49 +0100 Subject: [PATCH 021/189] new deploy script, build script OO -> FP, remove some special cases --- .lvimrc | 4 + build.js | 286 ++++++++++++++------------------------------ deploy.sh | 24 ++++ doc/en/index.json | 2 +- doc/es/index.json | 2 +- doc/ja/index.json | 2 +- doc/ko/index.json | 2 +- doc/tr/index.json | 2 +- doc/zhtw/index.json | 2 +- garden.jade | 17 ++- package.json | 21 ++-- server.js | 33 ----- 12 files changed, 146 insertions(+), 251 deletions(-) create mode 100644 .lvimrc create mode 100644 deploy.sh delete mode 100644 server.js diff --git a/.lvimrc b/.lvimrc new file mode 100644 index 00000000..23b445a9 --- /dev/null +++ b/.lvimrc @@ -0,0 +1,4 @@ +set wildignore=node_modules +set tabstop=2 +set shiftwidth=2 +set softtabstop=2 diff --git a/build.js b/build.js index 50e9d0c5..0c7be50a 100644 --- a/build.js +++ b/build.js @@ -1,206 +1,106 @@ -var fs = require('fs'), - path = require('path'), - jade = require('jade'), - md = require('node-markdown'), - Class = require('neko').Class; - -var format = new require('fomatto').Formatter(); - - -// Garden Generator ------------------------------------------------------------- -// ------------------------------------------------------------------------------ -var Garden = Class(function(options) { - var languages = fs.readdirSync(options.dir); - - this.languages = {}; - this.options = options; - this.options.language = this.json([this.options.dir, 'language.json'].join('/')); - - var that = this; - languages.forEach(function(lang) { - if (fs.statSync(that.options.dir + '/' + lang).isDirectory()) { - that.log('Parsing language "{}"...', lang); - that.lang = { - id: lang, - navigation: [], - index: [] - }; - - if (that.loadIndex()) { - that.languages[lang] = that.lang; - that.log(' Done.'); - - } else { - that.log(' Error: Could not find "index.json"!'); - } - } - }); - - delete this.lang; - this.log(''); - this.generateAll(); - -}, { - log: function() { - console.log(format.apply(null, arguments)); - }, - - loadIndex: function() { - var that = this; - this.lang.index = this.json([this.options.dir, - this.lang.id, 'index.json'].join('/')); - - if (this.lang.index === null) { - return false; - } - - that.lang.title = that.lang.index.langTitle; - this.lang.navigation = []; - this.lang.index.sections.forEach(function(section, i) { - that.loadSection(section); - that.lang.navigation.push({ - title: section.title, - link: section.dir, - articles: section.articles, - parsed: section.parsed - }); - }); - return true; - }, - - loadSection: function(section) { - var files = fs.readdirSync(this.folder(section.dir)); - section.parsed = {}; - section.link = section.dir; - - var that = this; - section.articles = section.articles || []; - section.articles.concat('index').forEach(function(article, e) { - if (files.indexOf(article + '.md') !== -1) { - var parsed = that.parseArticle(that.md(section.dir, article)); - section.parsed[article] = parsed; - if (section.articles.indexOf(article) !== -1) { - section.articles[e] = { - id: article, - link: section.link + '.' + article, - title: parsed.title, - parsed: parsed - }; - } - } - }); - }, - - parseArticle: function(text) { - var title = text.substring(0, text.indexOf('\n')); - text = text.substring(title.length); - title = md.Markdown(title.replace(/\#/g, '').trim()); - text = this.toMarkdown(text); - - var parts = text.split('

'); - var subs = []; - for(var i = 0, l = parts.length; i < l; i++) { - var sub = parts[i]; - subs.push((i > 0 ? '

' : '') + sub); - } - - return { - title: title.substring(3, title.length - 4), - text: text, - subs: subs - }; - }, - - toMarkdown: function(text) { - text = md.Markdown(text).replace(/'/g,'''); - text = text.replace(/
/g, ''); - - return text.replace(/