扩展Node.js类时的花括号 [英] Curly Braces when Extending Node.js Class
问题描述
为什么在扩展一个Node.js类时,把 {EventEmitter} = require'events'
括在大括号中?
Why do we wrap our variables in curly braces, like {EventEmitter} = require 'events'
, when extending a Node.js class?
例如,Trevor Burnham在他的教程中在事件驱动CoffeeScript上扩展Node的EventEmitter:
For example, Trevor Burnham, in his tutorial on Event-Driven CoffeeScript, extends Node's EventEmitter this way:
{EventEmitter} = require 'events'
class Rooster extends EventEmitter
constructor: ->
@on 'wake', -> console.log 'COCKADOODLEDOO!'
(foghorn = new Rooster).emit 'wake' # COCKADOODLEDOO!
推荐答案
This:
{EventEmitter} = require 'events'
等效于此JavaScript:
is equivalent to this JavaScript:
var EventEmitter;
EventEmitter = require('events').EventEmitter;
当 require'events'
使用模块的导出返回一个对象,其中一个导出是 EventEmitter
类。使用 {EventEmitter}
只是将 EventEmitter
从 require 'events'
返回;您也可以这样说:
When you require 'events'
, you're getting an object back with the module's exports, one of those exports is the EventEmitter
"class". Using {EventEmitter}
is just an idiomatic shortcut for pulling EventEmitter
out of the object that require 'events'
returns; you could also say this:
EventEmitter = require('events').EventEmitter
当你想提取一个对象的多个部分时,支撑版本开始派上用场;例如:
if you prefer. The braced version starts to come in handy when you want to extract more than one part of an object; for example, this:
{a, b} = c
就像这样JavaScript:
is like this JavaScript:
var a, b;
a = c.a;
b = c.b;
解构分配部分的CoffeeScript文档可能会对现在做一些好的阅读。
The Destructuring Assignment section of the CoffeeScript documentation might make some good reading right about now.
这篇关于扩展Node.js类时的花括号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!