0%

接下來的主題我們要來了解另一個 JavaScript 的重要觀念,它能增進我們 JavaScript 的開發能力,但它也是造成許多人混亂的主題,因為 JavaScript 在這部分和其他的程式語言有很大的不同。我們就來討論 JavaScript 的物件導向和原型繼承吧 !

當我們談到 JavaScript 的物件導向時,我們主要是在關注物件的建立,因為這部份很容易搞不清楚,所以我們要先從繼承講起。

閱讀全文 »

在討論完 first-class function 和其他的 JavaScript 特色後,我們要來討論函式程式設計 (Functional Programming)。

雖然 JavaScript 聽起來和 Java 有關,但它其實和函式程式語言比較有關,像是 Lisp, Scheme, ML,這些語言有 first-class function 的特色,function 就是物件,可以作為參數傳入,可以從 function 中回傳,所以有 first-class function 的 JavaScript,代表可以實作函式程式設計,能將程式碼都當成 function。

閱讀全文 »

Underscore.js,是非常有名的 JavaScript 函式庫,可以幫助我們處理陣列和物件,還展示如何做出那些功能,這和我們之後要講的東西有關。

我們稱這為開源教育 (open source education),有免費、大量的 JavaScript 函式庫的程式碼供我們使用,這些被廣泛使用的框架和函式庫的原始碼都非常不錯,可以從中學習原始碼,不過還是得先了解 JavaScript 的進階概念才行。

閱讀全文 »

今天我們討論三個 function 內建的方法 — call(), apply()bind()

執行環境與 this

在執行環境中有變數環境、外部環境參照、this 變數,我們已經在一些情況中看過 this 會指向全域物件,而在其他的情況下,如果 function 是物件中的方法,會指向包含 function 的物件。

閱讀全文 »

我們在寫 JavaScript 程式時,可能已經使用過 Closure, first-class function 和執行環境這些概念,像是 setTimeout() 或 jQuery 的事件,今天我們就來談談閉包和回呼 (Closures And Callbacks) 吧 !

範例程式

如果曾寫過像下方的範例程式碼,代表已經曾使用過 Closure 或函式表達式。

閱讀全文 »

在 JavaScript 中,Closure 是非常實用的,今天我們就來談談如何應用 Closure。

先前我們有介紹過一些 JavaScript 程式語言的功能,像是讓 function 在不同情形下被不同預設參數呼叫 (在 Function Overloading 的章節中),而在這章節我們要展示如何用 Closure 寫出更有彈性的程式。

閱讀全文 »

今天我們要來介紹 Closure 的經典例子。

Closure 經典例子

我們先建立一個 buildFunctions function,並在當中建立 arr 的空陣列和 for 迴圈,在迴圈中我們使用 .push() 加入 function 到陣列。

而在 function 中我們輸出 ii 會透過範圍鏈參照到,這樣會執行三次,並新增三個函式表達式 (函式物件) 給陣列,這樣陣列就會有三個相同的 function,最終 buildFunctions 會回傳 arr。

閱讀全文 »

如果我們想深入了解 JavaScript,Closure (閉包) 是一個重要的觀念,我們需要了解一些東西的運作原理、了解 first-class function、了解執行堆和執行環境,這些東西都會幫助我們認識 JavaScript 的 Closure。

程式範例

我們先寫一些程式來展現 Closure 的威力,然後我們會檢視背後的運作方式。

閱讀全文 »

先前我們已經了解 IIFE 是什麼,會使用在大部分的 JavaScript 框架和函式庫中,今天我們就來談談 IIFE 和安全程式碼,以及為何如此實用吧 !

IIFE 和安全程式碼

這是我們先前建立的 IIFE,我們透過 () 建立一個函式表達式,呼叫它並傳入參數,這樣裡面的 CODE 屬性就會被執行,結果便會是 Hello Apeiros0

閱讀全文 »