往String原型上封装一个时间戳转日期的方法

刚在学习React教程,里面有一节讲DOM的diffing算法的,老师的例子里面有展示当前时间的,但是他并没有完整的展示出来,而是用的 toTimeString() ,而我之前有封装过这个方法:时间戳转格式化日期

用的时候我转念一想,这样封装的话它是一个函数,能不能像 toTimeString 这样封装到字符串身上呢?说干就干,随手在浏览器控制台敲出如下代码:

String.prototype.toDate = function(){
    ???
}

突然懵逼,我该怎么拿到值??

正常的函数调用可以通过形参拿值,但我这是点出来的方法啊,那既然是点出来的,函数作用域中的this是不是就是这个函数的调用者也就是这个字符串呢?

但是它现在变成了this,我又该怎么获取到它原来的值呢?不用多想,它身上肯定会有什么原生的方法可以拿到它的值,旋即敲出如下代码:

String.prototype

不出所料,在原型的一堆属性和方法上发现了一个很可疑的家伙——valueOf

'123'.valueOf() // '123'

那么拿值的难题就解决了!!剩下的就是把之前的代码拷过来稍微改一下就行了

String.prototype.toDate = function () {
      var date = new Date(Number(this.valueOf().length == 13 ? this.valueOf() : this.valueOf() + '000'));
      let Y = date.getFullYear() + '-';
      let M = (date.getMonth() + 1).toString().padStart(2, '0') + '-';
      let D = (date.getDate()).toString().padStart(2, '0') + ' ';
      let h = (date.getHours()).toString().padStart(2, '0') + ':';
      let m = (date.getMinutes()).toString().padStart(2, '0') + ':';
      let s = (date.getSeconds()).toString().padStart(2, '0');
      return Y + M + D + h + m + s;
    }

 这样以后就可以快乐的点出格式化时间啦  ~·o·~

当然,Number类型的需要先转化一下,就不给Number原型再来一套了

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值