变量中的类工作错误
Class in variable works wrong
我有一个非常复杂的问题:我正在制作一个像linux终端一样工作的应用程序。所以我输入命令,应用程序做点什么。这是我的一个课程:
function _console() {
this.name = "console";
this.command_list = {
"help": function () {
this.app = function () {
write("Sorry, no commands so far ;P");
return this;
};
this.help = "type to get help";
return this;
}
};
this.start = function () {
write("Hi :)");
};
return this;
};
我把这个类放在数组中:
var mainData = {
openedApps: new Array(new _console()),
};
问题是:首先使用"帮助"功能效果良好。但当我再次输入时,会出现一个错误:
TypeError:对象#的属性"help"不是函数
这就是我执行功能的方式:
mainData.openedApps[0].command_list["help"]().app();
我有另一个类,和这个类非常相似,我把它粘贴在这里,只是我没有把它保存在变量中。我执行它就像:
_global_commands().command_list["command"]().app();
这很好用,所以我认为这是将我的类保持在var中的问题。但我真的不知道我做错了什么。
您有一些特殊之处。首先,为什么每次调用help
的方法都要重新声明,而不是只声明一次呢?
有几种方法可以做到这一点。下面的一个解决了您的问题。
"help": function() {
this.app = this.app || function(){
write("Sorry, no commands so far ;P");
return this;
};
this.help = this.help || "type to get help";
return this;
}
此外,您应该考虑在原型上而不是在构造函数内部声明方法。对于您的用例,这可能不会带来可观察到的问题,但结果是您的方法是实例的方法,而不是类的可继承方法。(根据jQuery创始人John Resig进行的一些基准测试,继承也比查找实例更快)。
相关文章:
- dhtmlx多个调度器不工作错误”;调度程序未定义”;
- Javascript 确认框工作错误
- 变量中的类工作错误
- 为什么这个jQuery验证工作错误
- Cordova罗盘API(navigator.compass.watchHeading)不工作(错误代码3)
- Javascript不能在Chrome或IE9中工作-错误”;复选框未定义“;显示在FF JS控制台中
- JQuery UI对话框不能正常工作;错误信息“TypeError: undefined不是一个函数”
- Jquery/JS css动画在悬停时工作错误
- AngularJs Ng-Keypress事件工作错误
- Jquery 选择器不工作:错误:语法错误,无法识别的表达式:a[@href]
- 日期选择器范围工作错误
- 为什么我的Jquery Ajax请求不工作错误:未定义的索引:ProID
- 反应不工作.错误提示(index):13 Uncaught SyntaxError: Unexpected token
- 身份工具箱不工作-错误代码:IDP的错误响应
- jquery日期picker beforeShowDay工作错误的月份
- Javascript验证在c#中不工作(错误消息)
- 为什么?每个函数都工作错误
- 路由到api工作错误
- 子元素位置相对工作错误
- 从timeline2.6.1的例子不工作-错误链接是未定义的时间线代码0