对象解构语法,括号内有单个项目

时间:2018-02-07 06:31:53

标签: node.js ecmascript-6

我遇到了这段代码,我不明白它的作用:

const { LineClient } = require('messaging-api-line');

现在,当大括号内有多个变量时,我理解对象赋值语法,例如:

let o = {p: 42, q: true};
let {p, q} = o;

const { LineClient }const LineClient之间有什么区别?

2 个答案:

答案 0 :(得分:2)

messaging-api-line的包导出类似于this

module.exports = {
  Line,
  LineClient,
};

所以,这样做:

const { LineClient } = require('messaging-api-line');

会将导出的LineClient类公开给您的代码。要实例化LineClient类,您只需执行const lc = new LineClient();

另一方面,这样做:

const LineClient = require('messaging-api-line');

会将整个导出的对象公开给您的代码。要实例化LineClient类,您必须执行const lc = new LineClient.LineClient();,这可能不是您想要的。

答案 1 :(得分:1)

const LineClient  = require('messaging-api-line');

这将采用默认导出并将其分配给变量LineClient,此变量可以具有任何名称

const { LineClient } = require('messaging-api-line');

当所需模块中有多个导出时,这将采用具有完全 KEY LineClient的导出