2012-03-06 161 views
0

我正在嘗試創建一個可以調用其他方法的JavaScript對象。但是,我遇到了一個我似乎無法解決的奇怪問題。調用Javascript對象內的方法

我有以下代碼

myObjectDef = function() { 
    this.init = function() { 
     //do some stuff 
     this.doSecondInit(); 
    } 
    this.doSecondInit = function() { 
     //do some more stuff 
    } 
} 

myObject = new myObjectDef(); 
myObject.init(); 

我得到的是美國的錯誤「消息:對象不支持此屬性或方法」。它結束於this.doSecondInit();.我無法弄清楚它爲什麼這樣做。我的代碼在調用第二種方法時運行良好。我如何完成這項工作?

+1

你的代碼看起來很好,對我來說工作正常:http://jsfiddle.net/vdVE8/ - 也許你需要顯示丟失的位。 – nnnnnn 2012-03-06 00:26:14

回答

3

有一組額外的括號的位置:

this.doSecondInit() = function() { 

不能分配給一個函數調用的結果,更不用說甚至不存在的函數的結果。

你的編輯後,你的東西似乎很好地工作:

http://jsfiddle.net/nabVN/

你確定你沒有在實際的代碼相同的錯別字?更好地開始習慣於在每次函數調用之後都不要放入那個(),這可能是從函數不是值的語言中傳出來的壞習慣。

+0

對不起,修復了我的代碼。 – Robbert 2012-03-06 00:22:18

+0

看起來我需要更仔細地查看我的代碼。這絕對不適合我,我絕對沒有第一套括號。我確信在這一點上我還有其他的東西可以忽略。 – Robbert 2012-03-06 00:31:15