扩展Node.js类时的花括号 [英] Curly Braces when Extending Node.js Class

查看:395
本文介绍了扩展Node.js类时的花括号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么在扩展一个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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆