object数组重写tostring_神奇的toString方法

定义: 方法可把一个逻辑值转换为字符串,并返回结果。

  • 正常用法
"string"
  • 特殊一点的用法
const 
可以转换成不同进制的字符串,但只对Number有效。
  • 检测类型
Object.prototype.toString 可以检测类型
console

可以检测出很多类型,是不是很强大,但为什么呢?

先看下面

Object

每个类型下面都重写了toString方法,所以重写后的方法各不相同。

对原型链有过了解的同学知道,所有的类型,最终指向的都是Object :

Function 

或者

Object

上面代码,说明什么问题?如果删除了Array原型上的toString方法,那么就会向上查找,最终查找到Object上的toString方法,并且调用,而Object上的toString方法会输出当前对象类型,所以Array.prototype.toString()会输出"[object Array]"

所以这就是我们为什么用Object.prototype.toString来检测类型

那么为什么用call呢?

call的作用是改变this指向。

Object

上面代码,实际上是执行了Object的toString方法,但this却是Array,所以输出的是Array是类型。

  • 其它用法
function 

是不是很神奇...

重写了一个方法的toString方法,然后如果这个方法当字符串用,那么就会执用方法上的toString方法,并返回结果,然后再作处理...

当然,如果执行这个函数,还是能执行的,这时与toString就没啥关系了。

利用这个特性,可以实现一些神奇的功能

const 

有几个特点:

  1. 可以接收任何数量的参数,作累加计算
  2. 返回一个方法,可以用来接收更多参数
  3. 返回一个累加值

正常来说,其实2与3是矛盾的,函数只能返回一种值,不可能返回的既是函数也是数值的。

这就是toString的特殊用法了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值