CoffeeScript中的Closured构造函数locals

时间:2013-03-26 09:19:06

标签: constructor coffeescript closures

有时候我会写这样的JS类:

mylib.Container = function() {
  var things = [];

  // Returns the index of the image added
  this.addItem = function(item)
  {
    things.push(item)
  }
}
...
var c = new mylib.Container();
c.addItem(whatever);

我使用“构造函数范围”的闭包变量(如things)来避免this范围问题,我也在紧密循环中使用它们(就像requestAnimationFrame中使用的那样)。这些变量永远不会渗透到创建的对象的外部。

有没有办法在CoffeeScript中创建和使用这些变量?我知道我的@ivar符号比this短,但有些东西告诉我,关闭var可能会更快...... {/ p>

1 个答案:

答案 0 :(得分:0)

在您的代码中,您在构造函数中分配函数。你也可以用咖啡做到这一点

myLib.container = ->
  things = []

  @addItem = (item) -> things.push item

  this

或者确实想要使用类语法

class myLib.container
  constructor: ->
    things = []
    @addItem = (item) -> things.push item