CoffeeScript 基礎知識

參考CoffeeScript程序設計javascript

基礎知識css

語法規範html

1) 用空格來表示縮進(要注意)java

2) 去掉function關鍵字,用 ->替代編程

3)括號,無關緊要,適當增長可讀性數組

4)做用域爲局部的,變量和函數框架

5)用@或者this來將匿名封裝函數對外開放less

6)字符串插值,雙引號中 用#{coffeescript}  用雙引號表示文本字符串,coffeescript不生效異步

7) """  context  """ 內容原geshi保留;  #註釋; ###  context ### 內容註釋編程語言

運算符

1) +‘100’ 將字符串轉換成數字

2)?= (判斷是否存在)   ||= &&= (javascript not exists) 

3)coffee 中 == 和 != 等同於javascript中的=== 和 !==,而javascript中的==和!=存在bug

4)? 是否認義和是否存在(undefined 或者 null)

5)借鑑Ruby中unless,還有isnt,以及內聯語句 。 console.log "today" if true

6)  swtich -- when -- else

函數

1) $#{val} 

2) myFunction = () ->   

  縮進的代碼塊  (若是僅有一行,則直接可跟在->後面)

3)  splat操做符,用...表示不肯定的多個參數,傳入的參數做爲字符串列表

數組

1) in 檢查是否存在

2) 多重賦值和交換賦值

3)range 以及分割用..表示

4)[4..-1] = [] 再第4個爲以後插入數值

散列{}

1)能夠寫在一行上,用{}和,號。也能夠用空格,多行分割

2)能夠用[]或者. 來得到屬性值 (js校驗框架--jslint,來獲取對象中第屬性)

3) 循環與迭代  用in by   

迭代對象 for key,value in obj when value.length < 5

4) prototype 函數能夠給系統對象添加函數或者屬性值,能夠用for own 僅查看本身定義的類型

5) 控制語句 while until 

comprehension容許循環及代碼寫在一行上。 console.log letter.toUpperCase for letter in myletter

6) do 關鍵字,控制變量做用域。 

類的支持

1) constructor(@name):->

2)constructor(@attributes):->進行重構,不須要對attributes中每一個屬性進行訪問,能夠避免攻擊

     若是 constructor(@attributes):->

    for key,value in @attributes

      @[key] = value

    則容易覆蓋掉類中函數

3) 繼承extends, 調用父類函數 super ,無需加參數

4)類級函數不須要實例化就能夠調用,相似於靜態函數,在函數名前加@

javascript原生不支持繼承,coffee模擬類類和繼承,因此子類中並無父類中的相關屬性值

5)原型屬性 prototype,在全部的對象實例上都添加一個函數或者屬性,則能夠用::

6)綁定(-> 與 =>) 比較難懂

javascript 是一門異步的,事件驅動的編程語言。即一觸即忘,觸發以後就繼續執行。

回調函數丟失例原先的上下文

class User

  constructor:(@name) ->

  sayHi: =>

    console.log "Hello #{@name}"

bob = new User('bob')

mary = new User('mary')

log = (callback) ->

  console.log "about to execute callback"

  callback()

  console.log "---executed callback"

log(bob.sayHi)

log(mary.sayHi)

如何syaHi:-> 結果輸出name是undefined,只能改成=> 經過綁定的方式將函數和該函數的上下文進行綁定

參考 understanding javascript function invocation and this. Yehuda blog.

coffeejs http://coffeescript.org/ 

undercore.js 和 backbone.js http://www.css88.com/doc/underscore1.5.2/

http://www.csser.com/tools/backbone/backbone.js.html

相關文章
相關標籤/搜索