Babel编译:动态计算的属性名

 

ES2015允许使用表达式作为属性名。

 

编译前:

 

const HELLO = 'hello';

let dog = {
  [HELLO](){
   console.log('hello'); 
  }
}

 

编译后:

 

"use strict";

// 对象添加属性
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 HELLO = "hello";

// 创建对象
var dog = _defineProperty({}, HELLO, function() {
  console.log("hello");
});

 

posted on 2019-08-08 11:00  沙滩海风  阅读(282)  评论(0编辑  收藏  举报

导航