2014-02-22 36 views
0

考慮到以下構造函數,CoffeeScript以這樣的方式編譯,即只返回最後兩個函數。如何從工廠函數中返回所有屬性

如何返回每個屬性,以便我可以直接訪問使用此工廠創建的對象的屬性?

createPerson = (firstName, lastName, age) -> 
    firstName = firstName 
    lastName = lastName 
    age = age 

    sayHi: -> 
    console.log "Hi there" 

    sayAge: -> 
    console.log "My age is #{age}" 

這是很容易使用CoffeeScript中的Class系統實現,但在這種情況下,我想簡單的方式和令人驚訝未能找到一個方法來做到這一點。

謝謝。

+0

檢查了這一點:http://coffeescriptcookbook.com/chapters/design_patterns/factory_method –

回答

1

通常你只是使用的CoffeeScript一個class,而不是試圖自己動手:

class Person 
    constructor: (@firstName, @lastName, @age) -> 
    sayHi: -> 
    console.log "Hi there" 
    sayAge: -> 
    console.log "My age is #{@age}" 

,然後創建新人們提供new Person

p = new Person('Pancakes', 'McGee', 42) 

注意@實例變量在構造函數的定義和sayAge裏面。

+0

我知道CoffeeScript提供的類功能,雖然即時通訊探索在JavaScript中可用的基本方法,所以我可以進一步理解兩者。我希望這是有道理的。 –

+0

也許你可以澄清你想要回報的東西。機率是你會這樣做,就像你做JavaScript一樣。 –