babeljs 无法正确转换扩展类[重复]

2024-04-25

我从这里得到了这个示例代码MDN https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/extends(稍微修改一下打印结果):

"use strict";

class myDate extends Date {
  constructor() {
    super();
  }

  getFormattedDate() {
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    return this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear();
  }
}

var testDate = new myDate();
document.write(testDate.getFormattedDate());

它可以在 Google Chrome 浏览器和 Node5 上运行,但是当我使用 babeljs 将其转译为 ES5(ES2015 预设)时,它不起作用:

"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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

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

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

var myDate = function (_Date) {
  _inherits(myDate, _Date);

  function myDate() {
    _classCallCheck(this, myDate);

    return _possibleConstructorReturn(this, Object.getPrototypeOf(myDate).call(this));
  }

  _createClass(myDate, [{
    key: 'getFormattedDate',
    value: function getFormattedDate() {
      var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
      return this.getDate() + "-" + months[this.getMonth()] + "-" + this.getFullYear();
    }
  }]);

  return myDate;
}(Date);

var testDate = new myDate();
document.write(testDate.getFormattedDate());

Why?

我在中找到了答案巴贝尔文档 http://babeljs.io/docs/learn-es2015/#subclassable-built-ins:

部分支持
内置的子类化能力应根据具体情况进行评估,因为 HTMLElement 等类可以进行子类化,而 Date、Array 和 Error 等许多类由于 ES5 引擎的限制而不能进行子类化。

如果 babel 在看到本机对象扩展(它不支持)时抛出错误,而不是假装一切顺利并生成错误代码,我将不胜感激:/


根据ECMAScript 6 兼容性表 https://kangax.github.io/compat-table/es6/, BabelJS 不支持类扩展。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

babeljs 无法正确转换扩展类[重复] 的相关文章

随机推荐

  • Visual Studio 中用于在 Windows 文件资源管理器中打开解决方案的快捷方式?

    Visual Studio 当前使用2013 中是否有键盘快捷键可以在Windows文件资源管理器中打开解决方案 或项目 目前 我通常必须打开解决方案资源管理器 右键单击我的解决方案或项目 然后向下滚动到 在文件资源管理器中打开文件夹 但这
  • 如何使用 printf 自定义自定义类型的输出?

    我已经阅读了很多内容专家 F 并正在致力于构建一个实际的应用程序 在调试时 我已经习惯了传递这样的 fsi 命令 以使 repl 窗口中的内容清晰可见 fsi AddPrinter fun x myType gt myType ToStri
  • 为什么叫彩虹桌呢?

    有人知道为什么叫彩虹桌吗 刚刚记得我们已经了解到有一种称为 字典攻击 的攻击 为什么不叫字典呢 因为它包含了整个可能性的 范围 字典攻击是一种尝试可能性的暴力技术 像这样 python伪代码 mypassworddict dict for
  • 如何在oracle中的字母数字列中使用order by

    在我的表的一列中 我有一个如下所示的值 Y 1 Y 2 Y 3 Y 4 Y 5 Y 6 Y 7 Y 8 Y 9 Y 10 Y 11 Y 12 Y 13 Y 14 当我按此列排序时 如果该行的值高达 Y 9 则它工作正常 否则我的结果是错误的
  • 使用objectid解析ios wherekey

    In my Message Parse 中的表有一个名为对话的字段 它是一个pointer to a Conversation 我的数据库中的另一个表 查询一个Message 我可不可以做 PFQuery messageQuery PFQu
  • MVC 6 中的捆绑和缩小

    看起来捆绑和缩小不再内置于 MVC 6 中 因为不再有App Start and Bundle Config 最终版本发布后会出现这种情况吗 我猜应该使用 Grunt 因为它似乎已融入 Visual Studio 2015 中 UPDATE
  • UIWebView 和 NSURLConnection 共享 cookie 存储吗?

    我正在构建一个使用 Google App Engine 作为后端的 iOS 应用程序 Google 提供了一个存储身份验证 cookie 的 HTML 登录站点 如果我在 UIWebView 中访问该站点并且用户登录 那么这些 cookie
  • XNA 4:导入 FBX 问题

    我在从 FBX 文件导入 3D 模型时遇到问题 源模型包含 575 个对象 1 个相机 如下所示 http habreffect ru files 23d 542fa7f67 source model png http habreffect
  • 如何检查.NET Core中是否存在配置节?

    如何检查配置节是否存在于appsettings json在 NET Core 中 即使某个部分不存在 以下代码也将始终返回一个实例化实例 e g var section this Configuration GetSection
  • Xcode10 - dyld:未加载框架中安装的 pod 的库

    我有一个带有目标框架的项目 主应用程序目标 框架A FrameworkA 是唯一使用某个 pod 的框架 因此在我的 pod 文件中我有类似的内容 target MainAppTarget do end target FrameworkA
  • 从更新面板异步回发后保持滚动位置

    我在使用 ASP NET 和更新面板时遇到一些问题 问题是 每次从更新面板发生部分回发时 页面都会滚动回顶部 在我的大多数页面上 这并不是一个大问题 但在某些页面上可能会变得很长 然后 当用户位于页面底部时 我显示 jQuery 弹出窗口R
  • 在 Sublime Text 3 中,我可以将 do 文件的选择发送到 Stata 吗?

    This SO question https stackoverflow com questions 18361667 is there a command line editor that highlights the stata syn
  • 为什么我删除的函数在 Node.js 中不是 typeof“undefined”?

    我正在使用 Node js 在我的 sum 函数被删除后 我希望 typeof sum 返回 undefined 但事实并非如此 functions are data in Javascript var sum function a b r
  • JQuery 模糊动画

    我使用以下脚本在单击按钮时模糊一个框 但如何使模糊需要 500 毫秒 document ready function attach click event to button button click function when butto
  • oracle sql if条件然后选择语句1 else选择语句2

    我有参数 prmtr我想要的是根据参数输入使用 select 语句 我试过这个 if prmtr A then select from tblA else select from tblB end if 但这是行不通的 还有其他方法可以做到
  • C++/OpenCV - 用于视频稳定的卡尔曼滤波器

    我尝试使用卡尔曼滤波器稳定视频以进行平滑 但我有一些问题 每次 我都有两帧 一帧是当前帧 另一帧是当前帧 这是我的工作流程 计算 goodFeaturesToTrack 使用 calcOpticalFlowPyrLK 计算光流 只保留优点
  • 在vb.net中将数据从DG和其他控件拖到另一个DG

    我在 VB Net 2010 中有表格 我想在 dgRegister 和日期 课程 ID 中单击并拖动多行 将其放入 dgCourseStudent 中 其中包含日期 注册 ID 注册名称和课程 ID 列 如何用vb net语言编写这个代码
  • 从 Visual Studio 搜索中排除特定文件

    是否可以从 Visual Studio 中的搜索中排除某些文件 例如 jquery js 几乎总是污染我的搜索结果 一半结果来自该文件 我知道您可以将特定类型列入白名单 但是当我想在 js 扩展名中搜索时 有解决方案吗 在这里投票功能 ht
  • 有没有办法使用 Paramiko 和 Python 来获取您连接的 SSH 服务器的横幅?

    有没有办法使用 Paramiko 和 Python 来获取您尝试连接的 SSH 服务器的横幅 我正在处理许多机器的超安全服务器设置过程 密码是通过预定义的密钥生成的 该密钥与 SSH 横幅一起打印出来 我可以访问将为我提供密码的实用程序 但
  • babeljs 无法正确转换扩展类[重复]

    这个问题在这里已经有答案了 我从这里得到了这个示例代码MDN https developer mozilla org en US docs Web JavaScript Reference Classes extends 稍微修改一下打印结