原文:MDN - toString
功能:
toString()
方法返回一个表示该对象的字符串。方法:
obj.toString()
返回值:一个表示该对象的字符串。
说明:
每个对象都有一个 toString()
方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。
默认情况下,toString()
方法被每个 Object
对象继承,如果该方法没有在自定义对象中被覆盖,toString()
返回 '[object type]'
,其中 type
是类型
const obj = new Object();
console.log(obj.toString()); // [object Object]
当然,我们根据这点,可以通过 toString()
来获取每个对象的类型。
为了每个对象都能通过 Object.prototype.toString()
来检测,我们需要用 Function.prototype.call()
或者 Function.prototype.apply()
的形式来调用,传递要检查的对象作为第一个参数,称为 thisArg
。
代码:
/**
* @name 示例
* @description toString 检测对象类型
*/
const toString = Object.prototype.toString;
console.log(toString.call(new Date)); // [object Date]
console.log(toString.call(new String)); // [object String]
console.log(toString.call(Math)); // [object Math]
console.log(toString.call('jsliang')); // [object String]
console.log(toString.call(123)); // [object Number]
console.log(toString.call([])); // [object Array]
console.log(toString.call({})); // [object Object]
console.log(toString.call(undefined)); // [object Undefined]
console.log(toString.call(null)); // [object Null]
console.log('------');
console.log(toString.apply(new Date)); // [object Date]
console.log(toString.apply(new String)); // [object String]
console.log(toString.apply(Math)); // [object Math]
console.log(toString.apply('jsliang')); // [object String]
console.log(toString.apply(123)); // [object Number]
console.log(toString.apply([])); // [object Array]
console.log(toString.apply({})); // [object Object]
console.log(toString.apply(undefined)); // [object Undefined]
console.log(toString.apply(null)); // [object Null]
PS:当然,看到这里会不会有人忍不住查一下 call()
、apply()
以及 bind()
三者的区别呢~
jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。