O documento resume as principais características da linguagem CoffeeScript, incluindo sintaxe simplificada em relação ao JavaScript, suporte a classes, herança e outros recursos como interpolação de strings e declaração de objetos.
10. Interpolação de strings (finally!)
nome = "Giovanni"
sobrenome = "Bassi"
puts "meu nome é #{nome} #{sobrenome}."
puts "meu nome tem #{nome.length} letras."
11. Limpando a cerimônia do Javascript
nas declarações de funções
var soma = function soma(x, y) {
return x + y;
}
Chamando:
var res = soma(4, 5)
12. Limpando a cerimônia do Javascript
nas declarações de funções
soma = (x, y) ->
x+y
significant white space
Chamando:
res = soma 4, 5
13. Limpando a cerimônia do Javascript
nas declarações de funções
Soma = (x, y) -> x + y
Chamando:
res = soma 4, 5
26. O problema do “this”
• “this” varia do contexto de chamada
• Isso vai falhar se for feito dentro de um objeto:
$('.shopping_cart').bind('click', function (event) {
this.loja.darDesconto(this.pedido);
});
• Não com CoffeeScript:
$('.shopping_cart').bind 'click', (event) =>
@loja.darDesconto @pedido
27. Classes!!!
class Person
constructor: (@name, @age) ->
Who: () ->
"This is #{@name} and he is #{@age}
years old"
person = new Person "Giovanni", 33
puts person.name
puts person.Who()
28. Métodos estáticos em classes
class Person
constructor: (@name, @age) ->
@familia: -> "Bassi"
Who: () ->
"This is #{@name}"
puts Person.familia() #: Bassi
29. Herança
class SerVivo
TemCarbono: () -> true
class Animal extends SerVivo
Locomove: () -> "como?"
class Passaro extends Animal
Locomove: () ->
"#{super()} voa"
puts (new Passaro()).Locomove()
puts (new SerVivo()).TemCarbono()
30. CoffeeScript direto na página
<script type="text/coffeescript">
alert i for i in 1..10
</script>
<script src="coffee-script.js"></script>