2012-09-28 20 views
27

¿Por qué ajustamos nuestras variables en llaves, como {EventEmitter} = require 'events', al extender una clase Node.js?Paréntesis rizados al extender Node.js Clase

Por ejemplo, Trevor Burnham, en su tutorial sobre dirigido por eventos CoffeeScript, se extiende EventEmitter del Nodo de esta manera:

{EventEmitter} = require 'events' 

class Rooster extends EventEmitter 
    constructor: -> 
    @on 'wake', -> console.log 'COCKADOODLEDOO!' 

(foghorn = new Rooster).emit 'wake' # COCKADOODLEDOO! 

Respuesta

43

Este:

{EventEmitter} = require 'events' 

es equivalente a este JavaScript:

var EventEmitter; 
EventEmitter = require('events').EventEmitter; 

Cuando require 'events', obtiene una o De nuevo con las exportaciones del módulo, una de esas exportaciones es la "clase" EventEmitter. El uso de {EventEmitter} es solo un atajo idiomático para sacar EventEmitter del objeto que devuelve require 'events'; también podría decir esto:

EventEmitter = require('events').EventEmitter 

si lo prefiere. La versión reforzada comienza a ser útil cuando desea extraer más de una parte de un objeto; por ejemplo, esto:

{a, b} = c 

es como este JavaScript:

var a, b; 
a = c.a; 
b = c.b; 

La sección Destructuring Assignment de la documentación CoffeeScript podría hacer una buena lectura en este instante.

Cuestiones relacionadas