javascript通過prototype屬性擴充String功能

來源:互聯網
上載者:User

String.length

作用:這實際上是 String 類的一個屬性,但是由於 JavaScript 將全形、半形均視為是一個字元,在一些實際運用中可能會造成一定的問題,現在我們通過 prototype 來彌補這部不足。

實現方法:

String.prototype.cnLength = function(){
    var arr=this.match(/[^\x00-\xff]/ig);
    return this.length+(arr==null?0:arr.length);
  }

實驗:alert("EaseWe空間Spaces".cnLength()) -> 顯示 16

這裡用到了一些Regex的方法和全形字元的編碼原理。

Date.DayDiff()

作用:計算出兩個日期型變數的間隔時間(年、月、日、周)

實現方法:

Date.prototype.DayDiff = function(cDate,mode){
    try{
      cDate.getYear();
    }catch(e){
      return(0);
    }
    var base =60*60*24*1000;
    var result = Math.abs(this - cDate);
    switch(mode){
      case "y":
        result/=base*365;
        break;
      case "m":
        result/=base*365/12;
        break;
      case "w":
        result/=base*7;
        break;
      default:
        result/=base;
        break;
    }
    return(Math.floor(result));
  }

實驗:alert((new Date()).DayDiff((new Date(2002,0,1)))) -> 顯示 329

alert((new Date()).DayDiff((new Date(2002,0,1)),"m")) -> 顯示 10

當然,也可以進一步擴充,得出響應的小時、分鐘,甚至是秒。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.