扩展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文档的解构赋值部分可能会做出一些很好的阅读。