如何在 ES5 中使用计算属性名称?

2024-04-30

我想要一个计算属性名称。我看到你可以在 ES6 中使用这个。但应该兼容IOS Webview。所以我不能使用ES6。还有 计算出的名称在循环内将始终相同,如果这对某人来说更容易的话。

有任何想法吗?

var today = moment().format('DD.MM.YY');
for (var i = 0; i < 5; i++) {
    initialData.push(
         {
            dates: {
                "01.01.01": false
                 // instead of 01.01.01 i would like to have the value of today as the key
            }
        }
    )
}

如果你碰巧有完整的 ES6+ 语法的代码,例如计算属性名称,并且你想让它兼容 ES5,到目前为止最简单的方法是使用像这样的转译器Babel https://babeljs.io/repl/为你做自动地。这将允许您以该语言的最新且最易读的版本编写源代码,同时允许过时的浏览器理解转译的代码,without不得不自己去搞乱丑陋而冗长的 ES5 语法。

例如,如果您的源代码如下所示,您希望兼容 ES5:

const prop1 = 'foo';
const prop2 = 'bar';
const prop3 = 'baz';
const obj = {
  [prop1]: 'val1',
  [prop2]: 'val2',
  [prop3]: 'val3',
};

console.log(obj);

You can 通过 Babel 运行它 https://babeljs.io/repl/ and 自动地获取ES5版本:

"use strict";

var _obj;

function _defineProperty(obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }
  return obj;
}

var prop1 = "foo";
var prop2 = "bar";
var prop3 = "baz";
var obj = ((_obj = {}),
_defineProperty(_obj, prop1, "val1"),
_defineProperty(_obj, prop2, "val2"),
_defineProperty(_obj, prop3, "val3"),
_obj);
console.log(obj);

转译的代码可能看起来有点难看,但大多数时候,您甚至不需要查看它,只需将其提供给客户端,它就会工作,即使在 Internet Explorer 等过时的环境中也是如此。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 ES5 中使用计算属性名称? 的相关文章

随机推荐