27

{EventEmitter} = require 'events'为什么我们在扩展 Node.js 类时将变量包装在花括号中,例如?

例如,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!
4

1 回答 1

43

这:

{EventEmitter} = require 'events'

相当于这个 JavaScript:

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

当您require 'events'使用模块的导出返回一个对象时,其中一个导出是EventEmitter“类”。Using{EventEmitter}只是一个惯用的快捷方式,用于拉出返回EventEmitter的对象require 'events';你也可以这样说:

EventEmitter = require('events').EventEmitter

若你宁可。当您想要提取对象的多个部分时,支撑版本开始派上用场。例如,这个:

{a, b} = c

就像这样的 JavaScript:

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

CoffeeScript 文档的Destructuring Assignment部分现在可能会成为一些很好的阅读材料。

于 2012-09-28T22:24:10.377 回答