0.1.8 • Published 8 years ago

babel-plugin-transform-es2015-ie8-classes v0.1.8

Weekly downloads
33
License
MIT
Repository
github
Last release
8 years ago

Transform ES2015 Classes Adapt IE8

ES2015 classes在转换中,如果没有对象方法,在转换时,会生成一个同名的命名函数表达式,在内部引用时,IE8会报找不到变量的错误。

该插件重写了部分转换代码,在只有一个构造函数时,将命名函数表达式的名称替换为一个新的名字。

使用

  1. 安装
    npm install babel-plugin-transform-es2015-ie8-classes
  2. 配置 可以按babel中的介绍直接使用该插件,但是在与presets配合时可能会出问题。如下的配置转换时将会报语法错误:
    {
        "presets": [ "es2015" ],
        "plugins": [ "transform-es2015-ie8-classes" ]
    }

因IE中不支持 defineProperties,需要使用 Babel 6: loose mode

Babel 原生转换类定义

With babel-plugin-transform-es2015-classes:

class Abc {
    constructor() {
        this.name = 'bar';
    }
}

Transform result:

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

let Abc = function Abc() {
    _classCallCheck(this, Abc);

    this.name = 'Hello';
};

Adapt IE8

IE8 中因为对命名函数表达式的实现不标准,函数内部不能访问命名函数的名称,因此该插件修改命名函数名,函数体中的_classCallCheck 使用函数表达式赋值后的对象。

Transform result with this plugin:

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

let Abc = function _Abc() {
    _classCallCheck(this, Abc);

    this.name = 'Hello';
};

参考

0.1.8

8 years ago

0.1.7

8 years ago

0.1.6

8 years ago

0.1.5

8 years ago

0.1.4

8 years ago

0.1.3

8 years ago

0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago