41

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
  • 4,826
  • 2
  • 26
  • 35
Noah Clark
  • 7,909
  • 14
  • 69
  • 113

3 Answers3

69

@ 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
  • 122
  • 9
jbabey
  • 44,525
  • 12
  • 67
  • 94
22

@ is shortcut for this in coffeescript

So

self = @

is coffeescript for:

var self = this;
Esailija
  • 134,577
  • 23
  • 263
  • 318
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
  • 4,826
  • 2
  • 26
  • 35