2014-01-23 35 views
1

我有以下小提琴:basic js class,當我嘗試throw 'error'或代碼示例中的註釋掉線throw AS.Exception.message('Test Error message')時,控制檯回來說它的未定義(它被拋出)。我都喜歡.....不,它不是 - 除非我用錯了。

另外 - 另一個問題是AS.Class正在使用$.extend() method其中將兩個或多個對象的內容合併到第一個對象中。所以我應該可以做這樣的事情:

throw self.message // var self = this; 

但如果我嘗試它指出信息不存在或不是一個函數,如果$.extend()合併兩個對象,它應該,方法message ,在相同的範圍內。因此我不應該這樣做AS.Exception.message - 自從它被合併到這個新對象後...

想法?

+0

我得到「未捕獲的異常:錯誤」在FF 26 Firebug控制檯,所以看起來像'throw'說法是罰款。你使用的是什麼瀏覽器? –

回答

2

你所擁有的只是一堆對象文字。這不是一個「階級」。當你做var self = this它在全局範圍內執行,並且self只是持有對全局對象的引用(當然不會有message屬性)。

控制檯傷愈復出說,其不確定的(這是擲)

throw不能取消定義(不能被定義或者爲此事)。它是一種語言結構,而不是參考。我認爲你的意思是你投擲的價值undefined。原因是你調用的函數不返回任何東西(所以它隱式返回undefined)。你什麼都有效,這是:

AS.Class = $.extend(AS.Exception, { 
    throwError: function(){ 
     throw undefined; 
    } 
}); 
+0

,沒有回答我的延伸消息,但給我洞察投擲。 – user3217071

+0

@ user3217071 - 第一位回答你的「延伸」問題。 'self'是對全局對象的引用,而不是對'AS'對象的引用。 –

+0

哦,對不起,我沒有注意到。那麼,如何在AS.Class中使用AS.Exception.message()而不必執行AS.Exception.message - 或者我是以正確的方式進行操作? – user3217071

相關問題