原创 JavaScript Garden - undefined 和 null

undefined 和 null JavaScript 有兩個表示‘空’的值,其中比較有用的是 undefined。 undefined 的值 undefined 是一個值爲 undefined 的類型。 這個語言也定義了一個全局

原创 JavaScript Garden - 爲什麼不要使用 eval

爲什麼不要使用 eval eval 函數會在當前作用域中執行一段 JavaScript 代碼字符串。 var foo = 1; function test() { var foo = 2; eval('foo = 3'

原创 JavaScript Garden - Array 構造函數

Array 構造函數 由於 Array 的構造函數在如何處理參數時有點模棱兩可,因此總是推薦使用數組的字面語法 -[] - 來創建數組。 [1, 2, 3]; // 結果: [1, 2, 3] new Array(1, 2, 3);

原创 JavaScript Garden - 對象使用和屬性

對象使用和屬性 JavaScript 中所有變量都是對象,除了兩個例外 null 和 undefined。 false.toString() // 'false' [1, 2, 3].toString(); // '1,2,3'

原创 JavaScript Garden - 閉包和引用

閉包和引用 閉包是 JavaScript 一個非常重要的特性,這意味着當前作用域總是能夠訪問外部作用域中的變量。因爲 函數 是 JavaScript 中唯一擁有自身作用域的結構,因此閉包的創建依賴於函數。 模擬私有變量 function

原创 JavaScript Garden - for in 循環

for in 循環 和 in 操作符一樣,for in 循環同樣在查找對象屬性時遍歷原型鏈上的所有屬性。 注意: for in 循環不會遍歷那些 enumerable 設置爲 false 的屬性;比如數組的 length屬性。 /

原创 JavaScript Garden -自動分號插入

自動分號插入 儘管 JavaScript 有 C 的代碼風格,但是它不強制要求在代碼中使用分號,實際上可以省略它們。 JavaScript 不是一個沒有分號的語言,恰恰相反上它需要分號來就解析源代碼。因此 JavaScript 解析器在

原创 JavaScript Garden - 構造函數

構造函數 JavaScript 中的構造函數和其它語言中的構造函數是不同的。通過 new 關鍵字方式調用的函數都被認爲是構造函數。 在構造函數內部 - 也就是被調用的函數內 - this 指向新創建的對象 Object。這個新創建的對象

原创 JavaScript Garden - this 的工作原理

this 的工作原理 JavaScript 有一套完全不同於其它語言的對 this 的處理機制。在五種不同的情況下 ,this 指向的各不相同。 全局範圍內 this; 當在全部範圍內使用 this,它將會指向全局對象。 譯者注:

原创 JavaScript Garden - 數組遍歷與屬性

數組遍歷與屬性 雖然在 JavaScript 中數組是是對象,但是沒有好的理由去使用 for in 循環 遍歷數組。相反,有一些好的理由不去使用 for in 遍歷數組。 注意: JavaScript 中數組不是 關聯數組。JavaS

原创 JavaScript Garden -作用域與命名空間

作用域與命名空間 儘管 JavaScript 支持一對花括號創建的代碼段,但是並不支持塊級作用域;而僅僅支持 函數作用域。 function test() { // 一個作用域 for(var i = 0; i < 10; i+

原创 JavaScript Garden - hasOwnProperty 函數

  hasOwnProperty 函數 爲了判斷一個對象是否包含自定義屬性而不是原型鏈上的屬性,我們需要使用繼承自 Object.prototype 的 hasOwnProperty 方法。 注意: 通過判斷一個屬性是否 undefi

原创 JavaScript Garden - 函數聲明與表達式

函數聲明與表達式 函數是JavaScript中的一等對象,這意味着可以把函數像其它值一樣傳遞。一個常見的用法是把匿名函數作爲回調函數傳遞對異步函數中。 函數聲明 function foo() {} 上面的方法會在執行前被 解析(hoi

原创 JavaScript Garden - arguments 對象

arguments 對象 JavaScript 中每個函數內都能訪問一個特別變量 arguments。這個變量維護着所有傳遞到這個函數中的參數列表。 注意: 由於 arguments 已經被定義爲函數內的一個變量。因此通過 var 

原创 JavaScript Garden - 原型

原型 JavaScript 不包含傳統的類繼承模型,而是使用 prototypal 原型模型。 雖然這經常被當作是 JavaScript 的缺點被提及,其實基於原型的繼承模型比傳統的類繼承還要強大。實現傳統的類繼承模型是很簡單,但是實現