背景:
我目前正在使用Phaser框架进行游戏。我有一个代码库可以使用,因此无法更改。 Phaser没有本地的导入/导出方式,因此我使用webpack和babel来解决with lots of help from this template.
我的问题源于尝试导入和导出以下代码:
给定代码:
AchievementManager = function(a) {
this.game = a,
this._playerDataModified = !1,
this.newLevels = [],
};
AchievementManager.prototype = {
_getTotalLoyaltyPoints: function() {
return 1;
}
}
我尝试出口。返回编译错误(不在浏览器中)'模块构建失败:SyntaxError:意外的令牌,期望{'参考AchievementManager:
export AchievementManager = function(a) {
this.game = a,
this._playerDataModified = !1,
this.newLevels = [],
};
export AchievementManager.prototype = {
_getTotalLoyaltyPoints: function() {
return 1;
}
}
如果有人能帮我找到如何导出/导入以这种形式编写的类,同时保持原型函数等核心概念,那就太棒了!
答案 0 :(得分:0)
导出构造函数就足够了。原型是它的一个属性,你可以像这样访问它(如果你需要它 - 与导入的构造函数交互的常用方法是new
它们)。您不必在属性赋值上放置某种“可见性注释”。您当前的代码不起作用,因为只能在ES6中导出变量绑定。
你应该写
export function AchievementManager(a) {
this.game = a;
this._playerDataModified = false;
this.newLevels = [];
}
AchievementManager.prototype._getTotalLoyaltyPoints = function() {
return 1;
};
答案 1 :(得分:0)
您已导出AchievementManager
。导出AchievementManager.prototype
没有任何合理的理由。导入时,只需在AchievementManager上使用.prototype
即可。
无论如何,如果你想:
AchievementManager.prototype = {
_getTotalLoyaltyPoints: function() {
return 1;
}
}
export const AchievementManagerPrototype = AchievementManager.prototype;