【问题标题】:Access internal Property Name to Compute New Property in ES6 [duplicate]访问内部属性名称以在 ES6 中计算新属性 [重复]
【发布时间】:2016-01-14 11:04:33
【问题描述】:

我有异议。我想添加属性,但我想在定义期间为我的object 中的所有属性计算suffix

var myObject = {
    foo: "bar",
    [ "prop_" + "Access foo property: foo" ]: 42
};

以下是我的预期输出:

{
    foo: "bar",
    prop_bar: 42
}

这不是我无法实现的情况。我可以通过下面的 sn-p 和它的工作正常来实现,但我希望在声明期间完成。

let myObject = {
    foo: "bar"
};
myObject[ "prop_" + myObject['foo'] ] = 'hello'

审稿人注意:我已经审阅了以下问题。

  1. Is there a shorthand for this in ES6/ES7?
  2. ES6 Object Literal Property Value Shorthand
  3. How to use ES6 computed property names in node / iojs?
  4. ES6 Computed (dynamic) property names

我觉得会有比上述方法更好的解决方案,以下是我的问题。

这种情况的最佳方法是什么?

我们有多少种方法可以做到这一点?

申报时不可以?

【问题讨论】:

  • myObject 之外声明foo。这里的用例是什么?
  • @FelixKling,您提到的问题是关于财产价值。我说的是属性键计算。请检查问题
  • 这没什么区别。属性键和属性值同时计算。
  • 最好的方法是在创建对象后分配其他属性,假设可以有任意数量的属性。这个问题没有特定的 ES6 解决方案,这就是为什么你应该看看我提到的问题。在 ES6 中做某事并不总是有不同的方式。

标签: javascript properties ecmascript-6


【解决方案1】:

您可以创建工厂函数来执行此操作,例如:

const create = v => ({
    foo: v,
    ["prop_" + v]: 42
});
let myObject = create("bar");

或内联:

let myObject = (v => ({
    foo: v,
    ["prop_" + v]: 42
}))("bar");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-20
    • 2015-10-08
    • 1970-01-01
    • 2011-10-15
    • 2017-01-09
    • 2016-04-03
    • 2019-08-13
    • 1970-01-01
    相关资源
    最近更新 更多