javascript通过prototype属性扩充String功能


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

  这里用到了一些正则表达式的方法和全角字符的编码原理。

  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

  当然,也可以进一步扩充,得出响应的小时、分钟,甚至是秒


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3