第一次发布海报,长时间潜伏。
我正在尝试学习.js的一些更高级的功能,并根据下面的粘贴代码有两个主观内容:
以下是代码:
function TheSuper(){
this.options = {componentType: "UITabBar", componentName: "Visual Browser", componentMethod: "select", componentValue: null};
execMTAction(this.options.componentType, this.options.componentName, this.options.componentMethod, this.options.componentValue);
};
TheSuper.prototype.tapUITextView = function(val1, val2){
this.options = {componentType: "UITextView", componentName: val1, componentMethod: "entertext", componentValue: val2};
};
我想执行这样的事情(非常简单):
theSuper.executeMTAction();
theSuper.tapUITextView("a", "b");
不幸的是我无法覆盖父级中的“this.options”,而.tapUITextView方法会抛出错误,说它无法找到executeMTAction。
我想要做的就是更新父级中的参数,然后每次进行任何方法调用时都运行executeMTAction。而已。有什么想法吗?我知道这是基本的,但我来自一个长期的程序生涯,而且.j似乎有这种奇怪的oo /程序汇合,我有点困难。
感谢您的任何意见!
答案 0 :(得分:0)
而不是这样做......
TheSuper.prototype.tapUITextView = function(val1, val2){
this.options = {componentType: "UITextView", componentName: val1, componentMethod: "entertext", componentValue: val2};
};
你可以更新对象的值,而不是试图覆盖它......
this.options['componentType'] = "UITextView";
this.options['componentName'] = val1;
this.options['componentMethod'] = "entertext"; // etc...
我看不到你在哪里定义'executeMTAction()'。我认为你可以在TheSuper中定义'executeMTAction'并从你的方法执行它w /'this'
function TheSuper() {
this.executeMTAction = function(options) {
// define...
}
}
TheSuper.prototype.amethodname = function(options) {
this.execMTAction(options);
}
您还可以在进行方法调用时将函数作为参数传递,并将其用作回调...
TheSuper.prototype.amethodname = function(options, callback) {
callback(options);
}
theSuper.amethodname(options, execMTAction);
抱歉,这对我来说是一个很长的一周。我可能完全错过了你要求的东西。希望它有所帮助。