Trong Javascript mọi đối tượng có phương thức valueOf() và toString(). Tôi đã nghĩ rằng phương thức toString() đã được gọi bất cứ khi nào một chuyển đổi chuỗi được gọi, nhưng dường như nó được trumpO bởi valueOf().valueOf() vs. toString() trong Javascript
Ví dụ, mã
var x = {toString: function() {return "foo"; },
valueOf: function() {return 42; }};
window.console.log ("x="+x);
window.console.log ("x="+x.toString());
sẽ in
x=42
x=foo
này đập vào mắt tôi như ngược .. nếu x là một số phức tạp, ví dụ, tôi muốn valueOf() để cung cấp cho cho tôi độ lớn của nó, nhưng bất cứ khi nào tôi muốn chuyển đổi thành một chuỗi, tôi sẽ muốn một cái gì đó như "a + bi". Và tôi sẽ không muốn phải gọi toString() một cách rõ ràng trong các bối cảnh ngụ ý một chuỗi.
Đây có phải là cách thực hiện không?
Bạn đã thử 'window.console.log (x);' hoặc 'alert (x);'? – Li0liQ
Họ cung cấp cho "đối tượng" và "foo" tương ứng. Nội dung thú vị. – brainjam
Thực ra, cảnh báo (x); cho "foo" và window.console.log (x); cung cấp "foo {}" trong Firebug và toàn bộ đối tượng trong bảng điều khiển Chrome. – brainjam