扩展Node.js类时的大括号

为什么在扩展一个Node.js类的时候,我们将variables包裹在花括号中,如{EventEmitter} = require 'events'

例如,Trevor Burnham在他的Event-Driven CoffeeScript 教程中 ,以这种方式扩展了Node的EventEmitter:

 {EventEmitter} = require 'events' class Rooster extends EventEmitter constructor: -> @on 'wake', -> console.log 'COCKADOODLEDOO!' (foghorn = new Rooster).emit 'wake' # COCKADOODLEDOO! 

这个:

 {EventEmitter} = require 'events' 

相当于这个JavaScript:

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

当你require 'events' ,你会得到一个带有模块导出的对象,其中一个导出是EventEmitter “class”。 使用{EventEmitter}只是将EventEmitter拉出require 'events'返回的对象的惯用快捷方式; 你也可以这样说:

 EventEmitter = require('events').EventEmitter 

如果你更喜欢。 当你想提取一个对象的多个部分时,支撑版本就开始派上用场了; 比如这个:

 {a, b} = c 

就像这样的JavaScript:

 var a, b; a = ca; b = cb; 

现在,CoffeeScript文档的解构赋值部分可能会做出一些很好的阅读。