es6 装饰器转 es5

本文介绍了如何使用Babel将ES6的类和装饰器转换为ES5代码,包括构造函数的实现、原型和静态属性的转换,以及装饰器模式的解释和转换前后的代码对比。装饰器在前端开发中常用于类属性和类的扩展,例如HOC、redux connect等。
摘要由CSDN通过智能技术生成

babel 配置

// package.json
"scripts": {
   
  "babel": "babel src/index.js --out-file src/babel_test.js",
}
"devDependencies": {
   
   "babel-cli": "^6.26.0",
   "babel-plugin-transform-decorators-legacy": "^1.3.5",
   "babel-preset-env": "^1.7.0"
}
// .babelrc
{
   
  "presets": ["env"],
  "plugins": ["transform-decorators-legacy"]
}

es6 类的转换

  • 转换前代码
class Demo {
   
  constructor() {
   
    console.log("init");
  }
  say() {
   
    console.log("say");
  }
  static print() {
   
    console.log("print");
  }
}

const ins = new Demo();
  • 转换后代码
    • 通过 构造函数 实现 constructor
    • 通过 Object.defineProperty 实现原型属性和静态属性
"use strict";
// 创建类的函数
var _createClass = (function () {
   
  // 定义属性的描述对象
  function defineProperties(target, props) {
   
    for (var i = 0; i < props.length; i++) {
   
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值