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 和继承以及其他一切都有效。感谢所有发表评论的人,我现在可以将其标记为已解决。
我正在为一个项目设置 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 和继承以及其他一切都有效。感谢所有发表评论的人,我现在可以将其标记为已解决。