回答
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