【发布时间】:2019-04-05 15:39:17
【问题描述】:
我在扩展 JS 数组时遇到了一些问题。这些是我的课程:
// ArrayList.js
export default class ArrayList extends Array {
clear() {
this.splice(0, this.length);
}
}
// MyItem.js
export default class MyItem {
constructor() {
this._id = 0;
}
getID() {
return this._id;
}
setID(value) {
if (typeof value === 'number') {
this._id = value;
}
}
}
// Test.js
import ArrayList from './ArrayList';
import MyItem from './MyItem';
let list = new ArrayList();
let item1 = new MyItem();
item1.setID(1);
list.push(item1);
let item2 = new MyItem();
item2.setID(2);
list.push(item2);
如果我现在执行:
list.forEach(function(item) {
console.log(item.getID());
});
一切都很完美,但如果我尝试调用我的自定义方法,我会遇到错误:
list.clear();
console.log(list.length);
例外是:
TypeError: list.clear is not a function
+++更新+++
我将测试脚本与 node.js 一起使用:
node start.js
这是我的 start.js:
require('babel-register')({
presets: [ 'env' ]
})
module.exports = require('./Test.js')
然后每个类都存储在一个单独的 JS 文件中。
【问题讨论】:
-
你在哪里/如何打电话给
clear()?经过快速尝试,我在浏览器和节点中都没有问题。 -
基础类在这里可以正常工作jsfiddle.net/wx0ht86n
-
你在使用 Babel 吗?扩展内置类不适用于 Babel。
-
嗯,好的。但是我如何在没有 Babel 的情况下使用导入?我读到这是必要的?
-
@altralaser:您只能启用您需要的功能,例如模块转换。
preset-env只会启用目标环境不支持的功能。 babeljs.io/docs/en/babel-preset-env
标签: javascript node.js ecmascript-6