【问题标题】:Javascript ES6 Object [duplicate]Javascript ES6对象[重复]
【发布时间】:2016-12-05 05:52:31
【问题描述】:

我在网上看到代码:

const SIGNIN_USER = 'SIGNIN_USER';
const SIGNUP_USER = 'SIGNUP_USER';
const ACTION_HANDLERS = {
  [SIGNIN_USER]: (para1) => { return para1; },
  [SIGNUP_USER]: (para2) => { return para2;},
}

// Using ACTION_HANDLERS object:
const handler = ACTION_HANDLERS[para3];
return handler ? handler(para3) : "Frist Time";

我知道ACTION_HANDLERS 是一个对象。但是我不明白[SIGNIN_USER], [SIGNUP_USER], ACTION_HANDLERS[para3]在这里是什么意思???。

我试过 Babel 翻译成 ES5,但我完全不明白。

我也不知道要搜索的关键字。谁能帮我吗?

【问题讨论】:

  • 代码中有很多 ES2015 的优点——如果你不理解 ES5 版本的含义,就很难用你能理解的方式来解释它
  • 看来computed properties 可能是您要找的?
  • 和箭头函数

标签: javascript ecmascript-6


【解决方案1】:

ES6 中的对象支持计算属性键名。

const myKey = 'baz';
const someObjWithRandomValues = {
  ['foo']: someValue,
  [myKey]: otherValue,
  ['rab'.reverse()]: anotherValue
};

// This is the same as
const someObjWithRandomValues = {
  foo: someValue,
  baz: otherValue
  bar: anotherValue
};

方括号中的表达式被求值并成为属性的名称。

const someObj = {
  [someExpression]: someValue
};

是一样的
const someObj = {};
someObj[someExpression] = someValue;

至于ACTION_HANDLERS[para3],就是访问一个带方括号的属性,是Javascript早就有的功能了。

const para3 = 'foo';
myObj[para3]();
// Same thing as:
myObj.foo();

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2021-06-19
    • 2018-09-15
    • 1970-01-01
    • 2020-08-15
    • 2018-12-01
    • 2017-05-02
    • 2019-09-09
    • 2018-04-12
    相关资源
    最近更新 更多