說我寫了一個Widget
類。當有人將它們傳遞給console.log時,是否可以控制我的對象的顯示方式?
function Widget() {}
有人使用我Widget
類發送一個實例console.log
。
console.log(new Widget()); // ▶ Widget
有沒有什麼辦法讓我控制該控件在控制檯中的顯示方式?注意看下面顯示:
console.log(window.location) // ▶ Location
console.log(document) // ▶ #document
console.log(document.body) // ▶ <body class="ask-page">…</body>
如果我要當一個Widget
實例發送到console.log
顯示更多有用的信息是什麼?我想我可以用我自己的實現替換console.log
,但我正在尋找更優雅的東西。 console.log
是否搜索可以控制輸出的特定功能?
更新:有人問我想達到什麼。這是一個簡單的例子。我在JavaScript中編寫了一個UrlBuilder
類,它使用Object.defineProperty
來創建屬性訪問器。 (這是我無法解決的一個限制。)問題是,每當有人發送UrlBuilder
實例到console.log
時,我想輸出URL。但是,它會顯示▶ UrlBuilder
。即使展開三角形顯示,您也看不到任何有用的內容,因爲屬性訪問器列在__proto__
屬性中。它看起來像一個空的無用對象,將URL作爲字符串顯示會更有用。
感謝您的鏈接, @DWright。我認爲'valueOf'可能是解決方案,但這不同於Chrome的控制檯。 =/ –
並且'toString()'也不是。也許正確的答案是提交一個Webkit錯誤。 –