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为一个方法,它接受一个参数,也称为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 回答