2012-05-31 38 views
0

我使用的CoffeeScript創建下面的類:當我創建類的新實例,並添加一些東西到陣列一個JavaScript類的數組是靜態

class User 
    userId: 0 
    rooms: new Array() 

,任何新的實例也包含相同的數組。生成的javascript是:

var User; 

    User = (function() { 

    User.name = 'User'; 

    function User() {} 

    User.prototype.userId = 0; 

    User.prototype.rooms = new Array(); 

    return User; 

    })(); 

如何設計每次我實例化類時都有一個新的空數組的類?

+0

'User.prototype.room = new Array()',這裏的'prototype'關鍵字表示所有'User'對象共享這個字段。 –

回答

3

你想userIdrooms是在this,而不是在原型,否則所有實例都將共享。

class User 
    constructor: (@userId = 0, @rooms = []) -> 

u = new User 1, [1,2] 
u2 = new User 2, [3,4] 

alert "#{ u.userId } #{ u.rooms } #{u2.userId} #{u2.rooms}" 

Try it here

@只是表示this.

該構造函數行做了很多。它定義一個構造

1)設置傳遞的值作爲對象(未原型)
2)上userIdrooms給出了每個屬性的默認值,如果不設置它們。

注意我甚至不需要在構造函數中做其他任何事情。絕對遵循該鏈接,以便您可以看到本示例創建的JavaScript。