2013-12-23 51 views
2

我有這樣的事情JavaScript調用函數:裏面本身

var MyObject = function() { }; 

MyObject.prototype = { 
    methodA: function() { 
      methodB(); 
    } 

    methodB: function() { 
      // do something 
    } 
} 

我如何得到這個工作?我不斷收到「對象沒有方法'methodB'」。

+1

你需要的了methodA的'關閉括號後的逗號:{}'還有一個'this.methodB();',而不是僅僅** **'的methodB ();' – zero298

+0

實際上你應該得到一個參考錯誤。 –

+0

'methodA:{}'後面有逗號。 'this.methodB();'在Chrome中給我一個錯誤:'Uncaught TypeError:Object# has no method'methodB'' – a11smiles

回答

2
this.methodB(); 

爲您實例使用

var newObject = new MyObject(); 
3

內嘗試使用methodA一個this新對象,這個調用會盡快工作。例如:

var MyObject = function() { }; 

MyObject.prototype = { 
    methodA: function() { 
      this.methodB(); 
    }, 

    methodB: function() { 
      alert('foo'); 
    } 
}; 

var o = new MyObject(); 
o.methodA(); // foo 

JSFiddle

+0

不起作用。在Chrome中,我收到以下錯誤:'Uncaught TypeError:Object# has no method'methodB'' – a11smiles

+0

沒關係,我在$ .post return方法中調用它。 – a11smiles