2012-09-28 19 views
27

Node.jsクラスを拡張するときに、{EventEmitter} = require 'events'のように中括弧で変数をラップするのはなぜですか?例えばNode.jsクラスを拡張するときに中括弧

、トレバー・バーナムは、イベントドリブンのCoffeeScriptの彼tutorialで、ノードの持つEventEmitterをこのように拡張します

{EventEmitter} = require 'events' 

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

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

答えて

43

この:

{EventEmitter} = require 'events' 

はこのJavaScriptに等価です:

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

require 'events'とすると、モジュールのエクスポートで取り消された場合、それらのエクスポートの1つはEventEmitter "クラス"です。 {EventEmitter}を使用すると、EventEmitterをオブジェクトの外に引き出すための慣用的なショートカットに過ぎません。require 'events'が返されます。もしあなたが好きであれば、これを言うこともできます:

EventEmitter = require('events').EventEmitter 

括弧付きのバージョンは、オブジェクトの複数の部分を抽出したいときに便利になります。例えば、この:

{a, b} = c 

はこのJavaScriptのようなものです:CoffeeScriptのドキュメントの

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

Destructuring Assignmentセクションでは、右について今、いくつかの良い読書をするかもしれません。

関連する問題