Does somebody know how to make private, non-static members in CoffeeScript? Currently I\'m doing this, which just uses a public variable starting with an underscore to clari
"class" in coffee scripts leads to an prototype based result. So even if you use a private variable it is shared between instances. You can do this:
EventEmitter = ->
privateName = ""
setName: (name) -> privateName = name
getName: -> privateName
.. leads to
emitter1 = new EventEmitter()
emitter1.setName 'Name1'
emitter2 = new EventEmitter()
emitter2.setName 'Name2'
console.log emitter1.getName() # 'Name1'
console.log emitter2.getName() # 'Name2'
But be careful to put the private members before the public functions, because coffee script returns the public functions as object. Look at the compiled Javascript:
EventEmitter = function() {
var privateName = "";
return {
setName: function(name) {
return privateName = name;
},
getName: function() {
return privateName;
}
};
};