javascript - Masalah Babel dengan mewarisi penukaran kelas yang dipratentukan
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-19 10:30:16
0
1
545

Saya menggunakan ES6 untuk menulis kelas yang mewarisi Array dan mengatasi kaedah tolak Namun, selepas menukarnya kepada ES5 menggunakan Babel, saya mendapati kaedah yang dipanggil masih kaedah tolak asal:

.babelrc:

{
    "presets": [
      "es2015",
      "react",
      "stage-3"
    ],
    "plugins": []
}

Kod ES6 sebelum penyusunan:

//类的定义
class ROUTE extends Array{

    constructor(position){
        super();
        this.push({
            position: (position || [0,0,0])
        })
    }

    push(geometry){
        ...//业务相关代码
    }
}

Kod disusun oleh babel: ES5

//先是几个工具方法
var _createClass=function...
var _get=function...
function _classCallCheck...
function _possibleConstructorReturn...
function _inherits...

//类的定义
var ROUTE = function (_Array) {
    _inherits(ROUTE, _Array);//继承
        function ROUTE(position) {
        ...//类的构造
        }
        _createClass(ROUTE, [{
            key: "push",
            value: function push(geometry) {
            //业务相关代码,实际上不会执行
        }]);
        return ROUTE;
}

Malah, apabila kaedah contoh kelas ROUTE dilaksanakan, kod logik perniagaan dalam kaedah _createClass tidak akan dipanggil sama sekali, tetapi hanya kaedah tolak Array akan dilaksanakan, melainkan kaedah tolak ditindih dalam pembina .

versi babel:

  "devDependencies": {
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-preset-stage-3": "^6.24.1"
  }
曾经蜡笔没有小新
曾经蜡笔没有小新

membalas semua(1)
我想大声告诉你

Sokongan separa
Subkelas terbina dalam hendaklah dinilai berdasarkan kes demi kes kerana kelas seperti HTMLElement boleh disubkelaskan manakala banyak seperti Tarikh, Tatasusunan dan Ralat tidak boleh disebabkan oleh pengehadan enjin ES5.

Disebabkan oleh pengehadan enjin penyemak imbas, Babel tidak menyokong subkelas beberapa kelas terbina dalam, seperti Tarikh, Tatasusunan, Ralat..., jadi tentukan jenis yang diperlukan mengikut keperluan anda sendiri

Rujukan: https://babeljs.io/learn-es20...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan