2010-01-17 19 views
3

當我編寫Javascript時,我使用window.alert()進行調試。通常我傳遞變量來提醒,並彈出一個包含該變量值的字符串。但是,如果我傳遞一個對象的警報,它會告訴我該對象的類型。例如:什麼屬性警示我?

var form = document.getElementById("my_form"); 
alert(form); // returns [object HTMLFormElement] 

那位,說[object blah blah]的部分。那是什麼財產?我最近開始製作自己的對象來封裝我正在處理的網站的有用部分...但是當我傳遞自己的對象來提醒它時,會給我一個通用消息[object Object],如果我有做了一堆不同種類的物體。比如,我希望我的對象能夠返回更多沿着[object My_Object]行的東西。

是否有一個屬性,我可以在函數My_Object()中設置,它會告訴警報我想讓它告訴我什麼?

謝謝!

z。

回答

4

嘗試重新定義類類型的「toString()」:它用於創建對象的字符串類型。默認是[object <type>],但那不是你想要的,不是。

雖然「您可以爲您創建的自定義對象覆蓋此方法,但如果您不覆蓋自定義對象中的toString,toString會返回[object type],其中type是創建該對象的構造函數的對象類型或名稱對象「,http://www.synchro.net/docs/js/ref/object.html#1193350

+0

只是改變「類型」沒有工作......但寫一個快速的toString方法很好! – Ziggy 2010-01-18 00:22:42

6

您必須覆蓋toString()方法。否則,將使用Object.prototype.toString,它將返回"[object Foo]",其中Foo是對象的內部(即不可訪問)類屬性的值。

2

而不是用alert()進行調試,你應該看看Firebug,以及優秀的網頁開發工具,具有更好的HTML檢查,javascript調試和其他好東西。

+0

+1。或者WebKit Web Inspector(在Safari和Chrome中)或IE 8 Developer Toolbar,或Opera Dragonfly或Firebug Lite(適用於舊版瀏覽器)。 – eyelidlessness 2010-01-20 06:01:04