var a = "asd";
toString.call(a); //prints [object String]
爲什麼這與a.toString();
不一樣? toString函數中的this
的值在兩種情況下都是正確的?我預計它會輸出「asd」(與a.toString()
相同)。javascript中的通話功能輸出
var a = "asd";
toString.call(a); //prints [object String]
爲什麼這與a.toString();
不一樣? toString函數中的this
的值在兩種情況下都是正確的?我預計它會輸出「asd」(與a.toString()
相同)。javascript中的通話功能輸出
你用什麼window.toString
,但它應該是:
String.prototype.toString.call(a) // then it should be same
他們是不同的方法(雖然它們具有相同的名稱)。除了@xdazz's answer,證明toString
在其他類型的行爲有所不同:
[].toString.call("abc"); //Array
這也不會返回。
document.querySelectorAll("*").toString.call("abc") //Node List
不。
(2).prototype.toString.call("abc") //Number
錯誤,也toString
在數量上也可以有一個基數的說法。
結論:它們都是不同的。由於window
是一種奇怪的Object
,它不共享與String
相同的toString
。
window.toString()與String.prototype.toString()有什麼不同?有沒有解釋window.toString()的行爲的文檔? – everconfusedGuy
它們只是不同的實現。 – xdazz
@xdazz - 我相信'window'中的'toString'與'''中的'forEach'具有不同的本地代碼,而不是'toString',就像'Array'和'Node List'中的'forEach'一樣。 –