2013-06-29 46 views
1

第一次海報,很長時間的潛伏者。瞭解基本原型和更新鍵/值對

我努力學習的.js的一些更先進的功能,並具備基於下面粘貼的兩個代碼ojectives:

  1. 我想方法添加到一個父類以特定的方式(通過調用原型)。
  2. 我打算每次進行關聯的方法調用時更新聲明的鍵/值對。無論如何,在TheSuper中看到的execMTAction都會執行每個函數調用。這是設計。

下面是代碼:

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。而已。有什麼想法嗎?我知道這是基本的,但我來自一個長期的程序職業生涯,.js似乎有這個我有點困難的oo/procedural這個奇怪的合流。

感謝您的任何意見!

+0

什麼是executeMTAction? –

+0

這是對我用於爲我的移動自動化工具構建執行字符串的單獨函數的特定調用。我傳入了ui元素,方法等的類型,並且execMTAction處理與對象交互並進行各種驗證檢查。 – JordanD

+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」,並從你的方法執行它瓦特/「這」

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); 

對不起,這對我來說是一個長周。我可能完全錯過了你所要求的。希望它有助於一些。

+0

這對我來說非常有見地!謝謝你的回覆。我仍在考慮實現一些回調結構,但已經以這種方式重構了我的代碼,並且它運行得非常完美。 – JordanD

+0

很酷。很高興我能幫上忙。 –