2012-11-18 151 views
0

我嘗試爲給定的類屬性設置默認值。上述代碼不返回value。它返回整個函數。在CoffeScript中將默認值設置爲Class屬性

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

如果我設置一個值,它那麼它的工作原理:

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

我想知道什麼是設置在CoffeScript一類屬性的默認值的正確方法。

回答

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實例有一個name屬性,那麼你想說這其默認值爲'value'

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

,也將give you 'value' and 'pancakes'在控制檯中。

1

爲什麼不是構造函數中的默認值?

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

如果你想設置的實際MyClass的屬性的功能,你可以這樣做:

class MyClass 
    @Name = 'value' 

,但我懷疑是不是你的意思。

相關問題