0

我正在使用咖啡脚本创建以下类:

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;

  })();

每次实例化类时,如何设计具有新空数组的类?

4

1 回答 1

3

您希望userId并且在原型roomsthis,而不是在原型上,否则所有实例都将共享它们。

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}"

在这里试试

简单的@意思this.

构造函数行做了很多。它定义了一个构造函数

1) 将传递的值设置为userId对象rooms(不是原型)
2) 如果未提供每个属性,则为每个属性提供默认值。

请注意,我什至不必在构造函数中做任何其他事情。一定要点击链接,这样你就可以看到这个例子创建的 javascript。

于 2012-05-31T01:48:54.030 回答