回答
toString.call(obj)
返回對象的類型代碼,而obj.toString()
返回對象的字符串表示,或者如果它沒有執行這個函數對象的類型。
實施例:
var a = [5];
a.toString() // "5"
toString.call(a) // "[object Array]"
更多細節可以在MDN找到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString
使用的toString()來檢測對象類:
var toString = Object.prototype.toString;
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]
// Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
UnderscoreJS使用toString.call(obj)
代替typeOf
,因爲它是更快:
_.isNumber = function(obj) {
return toString.call(obj) == '[object Number]';
};
像這樣使用'toString'是我見過的最糟糕的全局對象... – Bergi
它只是用來舉個例子! – SpartakusMd
你應該解釋一下它究竟是什麼,它是如何工作的,以及它會如何做得更好:-) – Bergi
當你打電話給toString.call(obj)
你實際上正在做的是調用window.toString(call)
這就是說你正在調用應用於你的對象obj
的全局對象的toString函數。
當您調用obj.toString()
時,您可以調用實際對象的toString函數,該函數可能在本地實現 - 例如,用於序列化或演示目的 - 或者原型鏈上的某處。
試試這個:
toString === window.toString; // true
編輯:
在Node.js的全局對象實際上是所謂global
,在瀏覽器中它仍將window
。
只是要精確 - 全局對象不是_always_'window',只能在瀏覽器中運行。 –
確實@JamesThorpe。 – Cros
- 1. AreEqual比較對象與ToString
- 2. Java:如何將字符串與toString()的返回進行比較
- 3. ToString(「0」)與ToString(CultureInfo.InvariantCulture)
- 4. 將枚舉常量與沒有valueOf或toString的字符串進行比較?
- 5. 使用toString()進行設置
- 6. Clojure中-toString與.toString之間的區別
- 7. 100.toString vs 100 ['toString']
- 8. EditText.getText()。toString()與其他字符串的比較失敗
- 9. parseInt()比toString()更快嗎?
- 10. JavaScript - 與toString()相反?
- 11. 格式toString() - 新行
- 12. 二進制搜索樹toString
- 13. QDomDocument toString
- 14. 。的ToString()
- 15. 逆.ToString()
- 16. 的toString
- 17. toString,Nullpointerexception
- 18. LinkedList toString()
- 19. Android + toString
- 20. 將textbox.Text與變量進行比較
- 21. 將索引與提交進行比較
- 22. 無法將datetime.datetime與builtin_function_or_method進行比較
- 23. 將短語與jQuery進行比較
- 24. Selenium將storedVars與文本進行比較
- 25. 將sqlite與字符串進行比較
- 26. 將UUID與GattService列表進行比較
- 27. 將Quagga與XORP進行比較
- 28. 將枚舉與整數進行比較
- 29. 將數據與sql列進行比較
- 30. 將int與數組進行比較java
關鍵的區別不在於性能,而在於'toString!== obj.toString'的可能性。告訴我們更多關於'toString'和'obj'的信息,我們將能夠回答你的問題... – Bergi
[toString()方法返回一個代表對象的字符串](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString) – ozil
這些片段返回不同的字符串。 – undefined