coffeeScript学习笔记-2 class


构造函数

定义构造函数(在实例化前调用的函数)很简单,使用名为constructor作为参数即可。

1
2
3
4
5
6
7
8
9
10
11
# coffeescript
class Animal
  constructor: (@name) ->
  
// javascript
  Animal = (function() {
    function Animal(name) {
      this.name = name;
    }
    return Animal;
  })();

@

@,我的理解是等同于this。

1
2
3
4
5
6
7
8
9
10
11
12
13
# coffeescript
class Animal
  @name: '长颈鹿',
  name: '河马'
  
// javascript
 Animal = (function() {
    function Animal() {}
    Animal.name = '长颈鹿';
    
    Animal.prototype.name = '河马';
    return Animal;
  })();

=>

=>是用来绑定上下文的,等同于自动做了 var that = this; 这个过程

1
2
3
4
5
6
7
8
9
10
11
#这个this会指向到$('body')
class Animal
  show: ->
    $('body').click () ->
      console.log(this)

#这个this会指向到Animal
class Animal
  show: ->
    $('body').click () =>
      console.log(this)

继承

继承也非常方便,一句代码就完成了继承。

1
2
3
4
5
6
class Animal
  name: '猴子'

class Human extends Animal
  show: ->
    console.log(@name)