我已經實現了這個不變的名次對象:定製我的對象是如何顯示在JS控制檯
var Pos = function(x, y) {
var _x = x;
var _y = y;
return {
x: function() { return _x; },
y: function() { return _y; },
};
}
現在,當我寫new Pos(5, 7)
到控制檯,它顯示是這樣的:
▶ Object {x: function, y: function} // Chrome
Object { x: Pos/<.x(), y: Pos/<.y() } // Firefox
這根本沒用,因爲我看不到x
和y
的值。 我可以做一個自定義函數來記錄x
和y
,但那不會很好,我會失去擴展對象並在裏面導航的有用可能性(想象更復雜的對象,Pos僅僅是一個例子)。
如果是在C#中,我會重寫ToString(),然後Visual Studio會自動在調試器中使用它來顯示我的對象。
在JS中,但是實現toString似乎沒有任何幫助。有沒有辦法在控制檯中輕鬆地看到我的對象的x
和y
?
chrome已經向您顯示x和y值,它們是函數。如果你想得到getters,就使用getters;例如:'get x(){return _x; },否則,沒有鏈接到執行該方法的私有變量,因爲顯而易見的原因,控制檯不會這樣做。 – dandavis
@dandavis有趣的是,我不知道JS中有getter。讓我檢查一下這是否有效。 –
是的,很多編碼員忽略了他們,但他們被添加到ES5中,現在在任何地方工作(ie8 +)。 – dandavis