我正在为一个项目设置JS模块,在该项目中,我正在使用原型进行OO编程(因为我不确定框架是否支持ES6类语法)。一个模块包含用于特定目的的“类”,另一个模块导入并使用这些类。
我仔细阅读了所有文档,了解如何正确设置JS原型的继承以及如何导出和导入模块。下面的代码示例说明了我要做什么。
MyModule.js:
function A(x, y) {
this.x = x;
this.y = y;
}
A.prototype.foo = function(bla) {
// ...
}
function B(x, y, z) {
A.call(this, x, y);
this.z = z;
}
B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;
export { B };
MainModule.js:
import * as MyModule from "./MyModule.js"
var b;
function bar() {
b = new MyModule.B(1, 2, 3);
b.foo(4); // <-- error happens here
}
当我尝试运行bar
时,b.foo
未定义。成员变量(例如b.z
)可以正常工作,但添加到原型中的函数不能正常工作。
有人有什么想法吗?预先感谢!
答案 0 :(得分:0)
看起来您正在使用es6语法,所以您可以做类似的事情
export function B(x, y, z) {
A.call(this, x, y);
this.z = z;
}
然后导入
import { B as MyModule } from "./MyModule.js"
或您想给它起的名字
答案 1 :(得分:0)
因此,事实证明Qt(我正在使用的是Qt)更喜欢ES6类语法来完成我试图做的事情。一旦切换到该位置,导入/导出和继承以及其他所有功能都将起作用。感谢所有发表评论的人,我现在可以将其标记为已解决。