浅拷贝和深拷贝 - 前置(4.4) - 判断数据类型 - toString

  • 原文: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() 三者的区别呢~

640?wx_fmt=png

jsliang 的文档库 由 梁峻荣 采用 知识共享 署名-非商业性使用-相同方式共享 4.0 国际 许可协议进行许可。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值