我已经挖了几个小时,看了Javascript prototype accessing another prototype function,Accessing a Javascript prototype function,Trigger one prototype function from another (including itself),Cannot call prototype method from another function以及其他3-4个类似问题,我觉得“好吧,这似乎并不那么糟糕”,并且为我的特定问题实施了一个解决方案(或三个)。或者我曾经想过!
我有一个JS文件(从Typescript编译),它包含一个AppComponent类和几个方法(缩短版本专注于我特定的麻烦):
AppComponent = (function () {
function AppComponent() {
var _this = this;
this.gridNo = '1';
//... and so on...
}
AppComponent.prototype.MenuSelect = function (link) {
this.tabCount = 0;
this.tables = [];
utils_1.Logging(' MenuSelect: ' + JSON.stringify(link));
var grids = link.grids;
this.ws.emit('C:GDRDN', { ds: grids });
// build up some HTML to make a table of data and return it to
// the caller
return "grid stuff!";
};
.
.
.
}
以上内容被加载到Angular 2 / Node(由另一位同事编写)并且在编写的上下文中工作正常:即,当从其他组件调用时,它显示数据表('grid') TypeScript中的那位同事。
但是当我生成一个菜单并尝试直接从另一个'正常'访问MenuSelect原型时,JS文件就像这样......
function createWHeelNavigation() {
basic.navigateFunction = function () {
var grids_selected = [ 4, 11 ];
var appcomp = new AppComponent();
output = appcomp.MenuSelect(grids_selected);
// minified.js function to add children content to a DOM element
$("grid_container").add(output);
}
// other navigation menu functions...
}
createWHeelNavigation();
...当我点击那个特定的'基本'菜单项时,我继续得到“Uncaught ReferenceError:AppComponent未定义”,即使根据我在SO中读到的内容在其他地方,创建对象的“新”实例是 访问其原型方法的方式。
所以在我把头发拉出来然后回到办公室的角落里摇晃,低声说“妈妈......”之后,我想我会把这个传给你们好人,看看我哪里出错了。我有一种狡猾的怀疑,我应该在某处使用“这个”,但我的眼睛正在穿过,并希望指向正确的方向。谢谢你的时间!
答案 0 :(得分:0)
我继续得到" Uncaught ReferenceError:未定义AppComponent"瓦特
常见的JavaScript排序问题。确保以正确的顺序加载js / ts。
请尽可能使用模块。 https://basarat.gitbooks.io/typescript/content/docs/tips/outFile.html