0

特定のクラス プロパティのデフォルト値を設定しようとしています。

class MyClass
    name: (name = 'value') ->

上記のコードは を返しませんvalue。関数全体を返します。

a = new MyClass
a.name
> function (name) {
if (name == null) name = 'value';
} 

値を設定すると、次のように機能します。

a = new MyClass
a.name = 'something'
a.name
> 'something' 

CoffeScript で Class プロパティのデフォルト値を設定する適切な方法は何だろうと思っています。

4

2 に答える 2

3

これ:

class MyClass
    name: (name = 'value') ->

nameは、 とも呼ばれる 1 つのパラメータを取るメソッドとして単純に定義されてnameおり、そのパラメータのデフォルト値は です'value'。したがって、ボディを追加してメソッドを実行すると、次のようになります。

class MyClass
    name: (name = 'value') ->
        console.log(name)
new MyClass().name()
new MyClass().name('pancakes')

コンソールに'value'とが表示されます。これがデモです。コンソールを開いて、何が起こるかを確認してください。'pancakes'

MyClassのインスタンスに、デフォルト値が である name プロパティを持たせたい場合は、次の'value'ように言います。

class MyClass
    constructor: (@name = 'value')
console.log(new MyClass().name)
console.log(new MyClass('pancakes').name)

これにより、コンソールにも表示されます'value''pancakes'

于 2012-11-18T01:52:26.440 に答える
1

コンストラクターのデフォルト値ではないのはなぜですか?

class MyClass
  constructor: (@name = 'default') ->

実際の MyClass 関数にプロパティを設定する場合は、次のようにします。

class MyClass
  @Name = 'value'

しかし、それはあなたが意図したものではないと思います。

于 2012-11-18T01:49:26.803 に答える