扩展Node.js类时的大括号

Jon*_*Saw 27 node.js coffeescript

为什么我们{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!
Run Code Online (Sandbox Code Playgroud)

mu *_*ort 43

这个:

{EventEmitter} = require 'events'
Run Code Online (Sandbox Code Playgroud)

相当于这个JavaScript:

var EventEmitter;
EventEmitter = require('events').EventEmitter;
Run Code Online (Sandbox Code Playgroud)

当你require 'events',你得到一个带有模块出口的对象时,其中一个出口是EventEmitter"类".使用{EventEmitter}只是一个惯用的快捷方式,用于拉出返回EventEmitter的对象require 'events'; 你也可以这样说:

EventEmitter = require('events').EventEmitter
Run Code Online (Sandbox Code Playgroud)

如果你更喜欢.当您想要提取对象的多个部分时,支撑版本开始派上用场; 例如,这个:

{a, b} = c
Run Code Online (Sandbox Code Playgroud)

就像这个JavaScript:

var a, b;
a = c.a;
b = c.b;
Run Code Online (Sandbox Code Playgroud)

CoffeeScript文档的Destructuring Assignment部分现在可以正确地阅读.