JavaScript 对象原型中的函数在被另一个模块导入时未定义

Functions in JavaScript object prototype undefined when imported by another module

我正在为一个项目设置 JS 模块,我正在使用原型进行 OO 编程(因为我不确定该框架是否支持 ES6 class 语法)。一个模块包含 "classes" 用于特定目的,另一个模块导入并使用这些。

我查看了所有我能找到的关于如何使用 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)工作正常,但添加到原型的函数却不行。

有人有什么想法吗?提前致谢!

看起来你在使用 es6 语法,所以你可以做类似的事情

export function B(x, y, z) {
    A.call(this, x, y);
    this.z = z;
}

然后导入

import { B as MyModule } from "./MyModule.js"

或者你想给它起的任何名字

所以事实证明 Qt(这是我正在使用的)更喜欢 ES6 class 语法来完成我试图让它做的事情。一旦我切换到那个,import/export 和继承以及其他一切都有效。感谢所有发表评论的人,我现在可以将其标记为已解决。