对象

  • 3.1 使用字面值创建对象。

    1. // bad
    2. const item = new Object();
    3. // good
    4. const item = {};
  • 3.2 如果你的代码在浏览器环境下执行,别使用 保留字 作为键值。这样的话在 IE8 不会运行。 更多信息。 但在 ES6 模块和服务器端中使用没有问题。

    1. // bad
    2. const superman = {
    3. default: { clark: 'kent' },
    4. private: true,
    5. };
    6. // good
    7. const superman = {
    8. defaults: { clark: 'kent' },
    9. hidden: true,
    10. };
  • 3.3 使用同义词替换需要使用的保留字。

    1. // bad
    2. const superman = {
    3. class: 'alien',
    4. };
    5. // bad
    6. const superman = {
    7. klass: 'alien',
    8. };
    9. // good
    10. const superman = {
    11. type: 'alien',
    12. };

  • 3.4 创建有动态属性名的对象时,使用可被计算的属性名称。

    为什么?因为这样可以让你在一个地方定义所有的对象属性。

    ``javascript function getKey(k) { returna key named ${k}`;
    }

    // bad
    const obj = {
    id: 5,
    name: ‘San Francisco’,
    };
    obj[getKey(‘enabled’)] = true;

    // good
    const obj = {
    id: 5,
    name: ‘San Francisco’,

  1. [getKey('enabled')]: true,
  2. };
  3. ```

  • 3.5 使用对象方法的简写。

    1. // bad
    2. const atom = {
    3. value: 1,
    4. addValue: function (value) {
    5. return atom.value + value;
    6. },
    7. };
    8. // good
    9. const atom = {
    10. value: 1,
    11. addValue(value) {
    12. return atom.value + value;
    13. },
    14. };

  • 3.6 使用对象属性值的简写。

    为什么?因为这样更短更有描述性。

    1. const lukeSkywalker = 'Luke Skywalker';
    2. // bad
    3. const obj = {
    4. lukeSkywalker: lukeSkywalker,
    5. };
    6. // good
    7. const obj = {
    8. lukeSkywalker,
    9. };
  • 3.7 在对象属性声明前把简写的属性分组。

    为什么?因为这样能清楚地看出哪些属性使用了简写。

    1. const anakinSkywalker = 'Anakin Skywalker';
    2. const lukeSkywalker = 'Luke Skywalker';
    3. // bad
    4. const obj = {
    5. episodeOne: 1,
    6. twoJedisWalkIntoACantina: 2,
    7. lukeSkywalker,
    8. episodeThree: 3,
    9. mayTheFourth: 4,
    10. anakinSkywalker,
    11. };
    12. // good
    13. const obj = {
    14. lukeSkywalker,
    15. anakinSkywalker,
    16. episodeOne: 1,
    17. twoJedisWalkIntoACantina: 2,
    18. episodeThree: 3,
    19. mayTheFourth: 4,
    20. };