方括号的函数声明如何在Node.js/Javascript中工作?

s-h*_*ter 3 javascript function square-bracket node.js ecmascript-6

第一次看到像这样在Node.js的宣告功能.简而言之,代码与此类似

'use strict';
const Actions = {
  ONE: 'one',
  TWO: 'two',
  THREE: 'three'
};
class FunMap {

  run(action) {
    const map = this;
    map[action]();
  }

  [Actions.ONE] () {
    console.log("Performing action one");
  }

  [Actions.TWO] () {
    console.log("Performing action two");
  }

  [Actions.THREE] () {
    console.log("Performing action three");
  }

}

var funMap = new FunMap();
funMap.run('one');
funMap.run('two');
funMap.run('three');
Run Code Online (Sandbox Code Playgroud)

上面的程序将打印出来

Performing action one
Performing action two
Performing action three
Run Code Online (Sandbox Code Playgroud)

在Node.js/Javascript中是否有这种类型的函数声明的技术名称?

这一行如何将所有这些(通过使用带有字符串常量的方括号声明的函数)放入FunMap对象的属性函数中?

const map = this;
Run Code Online (Sandbox Code Playgroud)

[]javascript类中的方括号表示法是否引用了类本身?

joe*_*ews 7

类中带方括号的语法称为计算属性名称.计算方括号内的表达式,并将结果的字符串值用作键.

方括号内的代码无法访问类本身,因为它在类声明之前进行了求值.

您的示例创建了一个如下所示的类:

class FunMap {

  run(action) {
    const map = this;
    map[action]();
  }

  one () {
    console.log("Performing action one");
  }

  two () {
    console.log("Performing action two");
  }

  three () {
    console.log("Performing action three");
  }

}
Run Code Online (Sandbox Code Playgroud)

run函数以不同的方式使用方括号 - 按名称查找属性.该行const map = this没有做任何特殊的事情 - 该函数会做同样的事情:

run(action) {
  return this[action]();
}
Run Code Online (Sandbox Code Playgroud)

this[action]意思是"得到叫物业actionthis".然后将该值称为不带参数的函数.

ES2015中添加了计算属性名称.通过名称获取对象的下标语法从一开始就是JavaScript的一部分.