27

{EventEmitter} = require 'events'Node.jsクラスを拡張するときに、変数を中括弧で囲むのはなぜですか?

たとえば、Trevor Burnhamは、イベント駆動型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'、それらのエクスポートの 1 つがEventEmitter「クラス」です。Usingは、返されるオブジェクトを{EventEmitter}引き出すための慣用的な近道です。次のように言うこともできます。EventEmitterrequire '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 に答える