Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有数组的javascript类是静态的_Javascript_Coffeescript - Fatal编程技术网

带有数组的javascript类是静态的

带有数组的javascript类是静态的,javascript,coffeescript,Javascript,Coffeescript,我正在使用coffeescript创建以下类: class User userId: 0 rooms: new Array() 当我创建一个新的类实例并向数组中添加一些内容时,任何新实例也包含相同的数组。生成的javascript是: var User; User = (function() { User.name = 'User'; function User() {} User.prototype.userId = 0; User.

我正在使用coffeescript创建以下类:

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;

  })();

如何设计每次实例化类时都有一个新的空数组的类?

您希望
userId
rooms
这个
上,而不是在原型上,否则所有实例都将共享它们

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

@
的意思就是
这个。

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

1) 在对象(不是原型)上将传递的值设置为
userId
rooms

2) 如果未提供每个属性,则为其提供默认值


注意,我甚至不需要在构造函数中执行任何其他操作。一定要遵循链接,以便查看此示例创建的javascript。

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

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

@
的意思就是
这个。

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

1) 在对象(不是原型)上将传递的值设置为
userId
rooms

2) 如果未提供每个属性,则为其提供默认值


注意,我甚至不需要在构造函数中执行任何其他操作。一定要遵循链接,这样您就可以看到此示例创建的javascript。

User.prototype.room=new Array()
,这里的
prototype
关键字意味着所有
User
对象都共享此字段。
User.prototype.room=new Array()
,此处的
prototype
关键字意味着所有
User
对象共享此字段。