了解基本原型和基础更新键/值对

时间:2013-06-29 04:16:13

标签: javascript prototype

第一次发布海报,长时间潜伏。

我正在尝试学习.js的一些更高级的功能,并根据下面的粘贴代码有两个主观内容:

  1. 我想以特定的方式向父类添加方法(通过调用原型)。
  2. 每次进行关联的方法调用时,我打算更新声明的键/值对。无论如何,在TheSuper中看到的execMTAction都会执行每个函数调用。这是设计的。
  3. 以下是代码:

    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 /程序汇合,我有点困难。

    感谢您的任何意见!

1 个答案:

答案 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);
抱歉,这对我来说是一个很长的一周。我可能完全错过了你要求的东西。希望它有所帮助。