Skip to content

Commit

Permalink
modified some sentences and fixed typo
Browse files Browse the repository at this point in the history
  • Loading branch information
ctiml committed Oct 13, 2015
1 parent 4bd125e commit 8d4b8cb
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 15 deletions.
2 changes: 1 addition & 1 deletion doc/zhtw/core/eval.md
Expand Up @@ -32,7 +32,7 @@
### 安全上的顧慮

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

### 結語

Expand Down
8 changes: 4 additions & 4 deletions doc/zhtw/function/general.md
Expand Up @@ -25,19 +25,19 @@

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


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

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

var foo = function bar() {
bar(); // 可以運行
}
bar(); // 錯誤:ReferenceError

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

6 changes: 3 additions & 3 deletions doc/zhtw/function/this.md
@@ -1,7 +1,7 @@
## `this` 的工作原理

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

### 全域變數

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

foo();

這裡 `this` 也會指向 *全域* 對象
這裡 `this` 也會指向 *全域* 物件

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

test.foo();

Expand Down
6 changes: 3 additions & 3 deletions doc/zhtw/object/forinloop.md
Expand Up @@ -27,10 +27,10 @@
}

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

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

### 總結

Expand Down
4 changes: 2 additions & 2 deletions doc/zhtw/object/hasownproperty.md
@@ -1,6 +1,6 @@
## `hasOwnProperty`

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

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

當檢查一個物件是否存在的時候, `hasOwnProperty`**唯一** 可用的方法。
同時在使用 [`for in loop`](#object.forinloop)
建議使用 `hasOwnProperty` 避免 [原型](#object.prototype)所帶來的干擾。
建議使用 `hasOwnProperty` 避免 [原型](#object.prototype)所帶來的干擾。
4 changes: 2 additions & 2 deletions doc/zhtw/object/prototype.md
Expand Up @@ -72,14 +72,14 @@ JavaScript 不包含傳統繼承的模型,它使用的是*原型*模型。

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

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

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

### 總結

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

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

0 comments on commit 8d4b8cb

Please sign in to comment.