編譯前函數
class Fruit{ static nutrition = "vitamin" static plant(){ console.log('種果樹'); } name; constructor(name){ this.name = name; } hello(){ console.log(this.name); } }
編譯後ui
"use strict"; // 是不是實例 function _instanceof(left, right) { // 支持Symbol時,right能夠是函數/對象:Symbol.hasInstance指向一個內部方法。 if ( right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance] ) { return !!right[Symbol.hasInstance](left); } // 不支持Symbol時,right必須是函數 else { return left instanceof right; } } // 必須經過new運算符,調用構造函數 function _classCallCheck(instance, Constructor) { if (!_instanceof(instance, Constructor)) { throw new TypeError("Cannot call a class as a 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); } } // 建立類 function _createClass(Constructor, protoProps, staticProps) { // 類的實例方法:做爲構造函數的原型的屬性 if (protoProps) _defineProperties(Constructor.prototype, protoProps); // 類的靜態方法:做爲構造函數的屬性 if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } // 添加一個屬性 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 Fruit = /*#__PURE__*/ (function () { // 類的靜態方法 _createClass(Fruit, null, [ { key: "plant", value: function plant() { console.log("種果樹"); } } ]); // 類對應的構造函數 function Fruit(name) { // 構造函數調用檢查 _classCallCheck(this, Fruit); // 類的實例屬性:做爲new建立的上下文的屬性 _defineProperty(this, "name", void 0); this.name = name; } // 類的實例方法 _createClass(Fruit, [ { key: "hello", value: function hello() { console.log(this.name); } } ]); return Fruit; })(); // 類的靜態屬性:做爲構造函數的屬性 _defineProperty(Fruit, "nutrition", "vitamin");