我尝试为给定的类属性设置默认值。
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属性设置默认值的正确方法是什么。
答案 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'
但我怀疑这不是你的意思。