日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

如何在String原型上封裝一個(gè)時(shí)間戳轉(zhuǎn)日期的方法詳解

作者:三笑癡513 更新時(shí)間: 2022-04-23 編程語言

剛在學(xué)習(xí)React教程,里面有一節(jié)講DOM的diffing算法的,老師的例子里面有展示當(dāng)前時(shí)間的,但是他并沒有完整的展示出來,而是用的 toTimeString() ,而我之前有封裝過這個(gè)方法:時(shí)間戳轉(zhuǎn)格式化日期

用的時(shí)候我轉(zhuǎn)念一想,這樣封裝的話它是一個(gè)函數(shù),能不能像 toTimeString 這樣封裝到字符串身上呢?說干就干,隨手在瀏覽器控制臺敲出如下代碼:

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

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

正常的函數(shù)調(diào)用可以通過形參拿值,但我這是點(diǎn)出來的方法啊,那既然是點(diǎn)出來的,函數(shù)作用域中的this是不是就是這個(gè)函數(shù)的調(diào)用者也就是這個(gè)字符串呢?

但是它現(xiàn)在變成了this,我又該怎么獲取到它原來的值呢?不用多想,它身上肯定會(huì)有什么原生的方法可以拿到它的值,旋即敲出如下代碼:

String.prototype

不出所料,在原型的一堆屬性和方法上發(fā)現(xiàn)了一個(gè)很可疑的家伙——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;
    }

?這樣以后就可以快樂的點(diǎn)出格式化時(shí)間啦? ~·o·~

當(dāng)然,Number類型的需要先轉(zhuǎn)化一下,就不給Number原型再來一套了

原文鏈接:https://blog.csdn.net/qq_60248719/article/details/124240076

欄目分類
最近更新