我正在使用带有node --experimental-modules
的现代Javascript(EC6 +)代码。
import bigInt from 'big-integer'; // npm i big-integer
console.log(bigInt(333).toString(2)) // fine
class bigIntB4 extends bigInt {
constructor(...args) {
super(...args);
}
test() {
console.log("Hello!")
}
}
let c = new bigIntB4(333) //fine
console.log(c.toString(2)) // fine
c.test() // BUG!
错误:“ TypeError:c.test不是函数”
答案 0 :(得分:1)
bigInt
is not a constructor function.是返回对象的普通函数。因此,您无法真正扩展它。
这是问题的简化示例:
function Foo() {
return {foo: 42};
}
class Bar extends Foo {
constructor() {
super();
}
}
console.log(new Bar instanceof Bar);
console.log(new Bar);
new Bar
返回的值是Foo
返回的值,不扩展Bar.prototype
。
如果只需要添加新方法at least,则可以修改原型:
bigInt.prototype.test = function () {
console.log("Hello!");
};