在CoffeeScript中将默认值设置为Class属性

时间:2012-11-18 01:37:15

标签: javascript coffeescript

我尝试为给定的类属性设置默认值。

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属性设置默认值的正确方法是什么。

2 个答案:

答案 0 :(得分: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'Here's a demo,打开你的控制台,看看会发生什么。

如果您希望MyClass的实例具有默认值为'value'的名称属性,那么您想要这样说:

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

在控制台中也是give you 'value' and 'pancakes'

答案 1 :(得分:1)

为什么不是构造函数中的默认值?

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

如果你想在实际的MyClass函数上设置一个属性,你可以这样做:

class MyClass
  @Name = 'value'

但我怀疑这不是你的意思。