Rumah  >  Soal Jawab  >  teks badan

javascript - Masalah Babel dengan mewarisi penukaran kelas yang dipratentukan

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"
  }
曾经蜡笔没有小新曾经蜡笔没有小新2709 hari yang lalu513

membalas semua(1)saya akan balas

  • 我想大声告诉你

    我想大声告诉你2017-05-19 10:32:16

    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...

    balas
    0
  • Batalbalas