【问题标题】:Curly Braces when Extending Node.js Class扩展 Node.js 类时的花括号
【发布时间】:2012-09-20 19:31:23
【问题描述】:

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

例如,Trevor Burnham 在他关于 Event-Driven CoffeeScript 的 tutorial 中,以这种方式扩展了 Node 的 EventEmitter:

{EventEmitter} = require 'events'

class Rooster extends EventEmitter
  constructor: ->
    @on 'wake', -> console.log 'COCKADOODLEDOO!'

(foghorn = new Rooster).emit 'wake' # COCKADOODLEDOO!

【问题讨论】:

    标签: node.js coffeescript


    【解决方案1】:

    这个:

    {EventEmitter} = require 'events'
    

    相当于这个JavaScript:

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

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

    EventEmitter = require('events').EventEmitter
    

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

    {a, b} = c
    

    就像这样的JavaScript:

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

    CoffeeScript 文档的Destructuring Assignment 部分现在可能会成为一些不错的读物。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 2019-01-26
      • 1970-01-01
      相关资源
      最近更新 更多