42

I have some code that looks like

self = @

and then later on it's using @someMethodName or self.someMethodName

Does @ have some special meaning?

shaedrich
  • 5,457
  • 3
  • 26
  • 42
Noah Clark
  • 8,101
  • 14
  • 74
  • 116

3 Answers3

71

@ is not a valid character for a javascript identifier. Identifiers may only contain $, _, digits and letters.

In coffeescript, @ means this.

CoffeeScript has a few nice features related to the this keyword. First, CoffeeScript uses the @ symbol as shorthand for this.. For example, @foo is equivalent to this.foo. Second, if you use the @ symbol in the parameters of a function, CoffeeScript will automatically assign those values as properties of the object.

Edit: As far as jQuery is concerned, the same identifier rules as javascript apply since jQuery is just javascript. For other uses of @ in jQuery, see this question or the docs.

xTomasM
  • 332
  • 2
  • 11
jbabey
  • 45,965
  • 12
  • 71
  • 94
22

@ is shortcut for this in coffeescript

So

self = @

is coffeescript for:

var self = this;
Esailija
  • 138,174
  • 23
  • 272
  • 326
1

Since the design of CoffeeScript a couple of years have passed and not everything which was proposed in CoffeeScript made it into ECMA script. Instead of being used as a shortcut for this, it's proposed to be used for decorators.

shaedrich
  • 5,457
  • 3
  • 26
  • 42