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部分现在可以正确地阅读.