为什么在扩展Node.js类时,我们要把变量放在花括号里,比如{EventEmitter} = require 'events'?
例如,Trevor Burnham在他的tutorial on Event-Driven CoffeeScript中这样扩展了Node的EventEmitter:
{EventEmitter} = require 'events'
class Rooster extends EventEmitter
constructor: ->
@on 'wake', -> console.log 'COCKADOODLEDOO!'
(foghorn = new Rooster).emit 'wake' # COCKADOODLEDOO!发布于 2012-09-29 06:24:10
这一点:
{EventEmitter} = require 'events'等同于此JavaScript:
var EventEmitter;
EventEmitter = require('events').EventEmitter;当你类的时候,你会得到一个带有模块导出的对象,其中一个导出就是EventEmitter“require 'events'”。使用{EventEmitter}只是将EventEmitter从require 'events'返回的对象中拉出的惯用快捷方式;您也可以这样说:
EventEmitter = require('events').EventEmitter如果你喜欢的话。当您想要提取对象的多个部分时,带括号的版本开始派上用场;例如,如下所示:
{a, b} = c就像这样的JavaScript:
var a, b;
a = c.a;
b = c.b;现在,CoffeeScript文档的Destructuring Assignment部分可能会成为一些不错的读物。
https://stackoverflow.com/questions/12648054
复制相似问题