javascript - 我如何检查环境是否支持像 Array 这样的扩展构建

标签 javascript es6-class

我想扩展原生数组

class MyArray extends Array {}

但是这个特性不能被 Babel 转译为 es5。出于我的目的,用自己的版本填充 Array 类就足够了,这样 es5 用户仍然可以拥有一个有效的对象,而无需使用原生 Array 魔法。

我的想法是检查环境是否支持扩展原生类型,如果支持,则使用 Array。如果没有,请使用 polyfilled Array。

如何检查它是否受支持?

最佳答案

在当前的 Chrome 上,此代码报告 true,但在 es2015 模式下的 Babel 中,它报告 false,因为转译后的构造函数仍返回“真实的”Array对象。:

class MyArray extends Array {};
let a = new MyArray(1, 2, 3, 4);
console.log(a instanceof MyArray);

关于javascript - 我如何检查环境是否支持像 Array 这样的扩展构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52950265/

相关文章:

javascript - Getter/Setter 和原型(prototype)链

javascript - 一个页面上同一 javascript 类的两个实例引用同一实例

javascript - 在 iPhone/iPad 上使用 CSS 悬停动态创建的元素

javascript - 将 setTimeout 与 jQuery 一起使用

javascript - 无法使用 Javascript 显示 XML 元素名称

javascript - ES6 类属性未定义

javascript - 将动态值绑定(bind)到 ng-repeat 内的进度条

javascript - 根据 javascript 中的元素 id 在加载时删除和添加类

javascript - 如何在未定义类、仅传递给的模块中获取智能感知?

javascript - React中如何实现 "normal"ES5原型(prototype)继承?