-
Notifications
You must be signed in to change notification settings - Fork 0
Home
__ Page 17 __
i = i + 1
i += 1
JSLint 提示你這麼做;原因是他對 ++ 和 -- 提示「過度使用伎倆」(excessive trickiness)。如果你不同意這點,你可以將 JSLint 的設定值 plusplus 設為 false(預設為true)。
__ Page 42 __
Hint
「空白物件(blank object)」和「空物件(empty object)」只是為了簡化,Javascript裡並沒有真正空的物件,即使是最簡單的 {} 物件也會有繼承自Object.prototype的屬性和方法。而「空」物件我們將解釋為,一個物件,除了繼承來的屬性之外沒有自己的屬性。
__ Page 54 __
Javascript 有五種原始型別:數值、字串、布林、null 和 undefined。除了 null 和 undefined 之外,其餘三種型別都有原始型別包裹物件(primitive wrapper objects)。包裹物件可以使用內建的建構式 Number()、String() 和 Boolean()來建立。
原始數值和數值物件的差異,參考下面的範例:
var n = 100;
console.log(typeof n); // "number"
var nobj = new Number(100);
console.log(typeof nobje); // "object"
__ Page 62 __
函式宣告式只能出現在「program code」裡面,意思是在函式本體中,或在全域空間中。它門的定義無法賦值給變數或屬性,或作為其他函式的參數。
// 全域作用域
function foo() {}
function local() {
// 區域作用域
function bar() {}
return bar;
}
__ Page 63 __
Hint
技術上是可以將一個具名函式表示式指派給有著另一個名稱的變數,例如:
var foo = function bar() {};
然後這種方法產生的行為在某些瀏覽器(IE)上未被正確的實作,所以不建議用這種模式。
__ Page 115 __
對於習慣用 class 思考的程式員,Javascript 可能會讓他們感到困惑,這就是為什麼有些程式員會選擇試圖將 Javascript 編寫的更class-like。Douglas Crockford 所提出的 method() 方法,其概念就是其中一個嘗試。讓 Javascript 變得 class-like 並不是一種推薦的方式,但儘管如此,這還是一種很有趣的模式,可能會在某些應用中碰到。
使用建構式看起來就像在 Java 中使用 class,也讓你可以在建構式本體中,新增實體的屬性到 this。不過,在 this 上新增方法是沒有效率的,因為會造成方法在每個實體上都重新建立,於是浪費更多記憶體。這就是為什麼可重用的方法應新增在建構式的 prototype 屬性中。
https://github.com/hoyangtsai/javascript-patterns/blob/master/ch5-p116-method.js