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

相关文章
相关标签/搜索