LoginSignup
115
105

More than 5 years have passed since last update.

CoffeescriptのClassの作り方メモ

Last updated at Posted at 2014-03-10
  • 間違ってそうだけど、メモを残してみる。
  • :: (ダブルコロン)の意味がprototypeということで追記してみた。

Sample class

hoge.coffee
class Hoge
  # static public parameter / constants
  @classParam = "hoge"               # Hoge.classParam
  @CONST = 1                         # Hoge.CONST

  # prototype parameter
  prototypeParam : 0                 # Hoge.prptotype.prototypeParam
  Hoge::prototypeParam2 = 0          # Hoge.prototype.prototypeParam2

  # static private parameter
  _privateParam = 0                  # var _privateParam

  # static public method
  @classMethod : (param)->           # Hoge.classMethod = function(param){...}
    alert param

  # constructor
  constructor: (@instanceParam) ->   # Hoge = function(instanceParam){...}
    @instanceParam2 = ""

  # public method
  instanceMethod: (param) ->         # Hoge.prototype.instanceMethod(param){...}
    @instanceParam = param

  # static private method            # var _privateMethod = function(){...}
  _privateMethod = ->
    _privateParam++

static public parameter / constants

  • @を付けたパラメータは、Hoge.classParam = "hoge";のように展開される。
  • =と:で差異はない。
  • classの定数を定義する場合もこの方法を用いる。定数は全て大文字とする。

prototype parameter

  • @無しで:で定義したパラメータはHoge.prototype.prototypeParam = 0;の様に展開される。
  • Hoge:: に続けて定義しても同じ意味になる。値は=で設定する。
  • 使用しない方がいい。constructorで@付き変数を定義するようにする。

static private parameter

  • @無しで=で定義したパラメータはvar _privateParam = 0;の様に展開される。
  • staticなprivate変数なので、値はインスタンス間で共有される。
  • staticでないprivate変数は対応が難しいので、constructorで@付き変数を用意して、外部から使わないようにするのがいいと思われる。

static public method

  • @付きのmethodは、Hoge.classMethod = function(param){...}のように展開される。
  • =と:で差異はない。

constructor

  • @付きの引数は、インスタンスのパラメータとして初期化される。this.instanceParam = instanceParam;の様に展開される。
  • 引数以外のインスタンスパラメータはconstructor内で@付きで宣言する。this.instanceParam2 = "";の様に初期化される。

public method

  • :で宣言したmethodは、Hoge.prototype.instanceMethod = function(param){...}の様に展開される。
  • constructorでなくても、@付きの引数や、@付きの変数を使用できる。thisに変数が追加される。

static private method

  • =で宣言したmethoは、var _privateMethod = function(){...}の様に展開される。
  • public methodからそのまま実行した場合、staticなmethodなので、インスタンスのthisにはアクセスできない。_privateMethod.call(this);の様にする。
115
105
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
115
105