扩展javascript内置对象

阅读更多

 

扩展了内置对象Array Date String的方法

 

 

/******************Array 对象扩展***********************/
/** 去除数组中的重复项 **/
Array.prototype.removeRepeat = function () {
    var reset = [], done = {};
    for (var i = 0; i < this.length; i++) {
        var temp = this[i];
        //这里的json对象一定要以数组的方式访问,否则会认为找不到这个对象
        if (!done[temp]) {
            done[temp] = true;
            reset.push(temp);
        }
    }
    return reset;
};

//删除指定的数组
Array.prototype.del = function(n)
{
    if (n<0) return this;
    return this.slice(0,n).concat(this.slice(n+1,this.length));
};

// 数组第一次出现指定元素值的位置
Array.prototype.indexOf = function(o)
{
    for (var i=0; i9?(this.getYear() % 100).toString():'0' + (this.getYear() % 100));
    str=str.replace(/MM/,(this.getMonth()+1)>9?(this.getMonth()+1).toString():'0' + (this.getMonth()+1));
    str=str.replace(/M/g,this.getMonth());
    str=str.replace(/w|W/g,Week[this.getDay()]);
    str=str.replace(/dd|DD/,this.getDate()>9?this.getDate().toString():'0' + this.getDate());
    str=str.replace(/d|D/g,this.getDate());
    str=str.replace(/hh|HH/,this.getHours()>9?this.getHours().toString():'0' + this.getHours());
    str=str.replace(/h|H/g,this.getHours());
    str=str.replace(/mm/,this.getMinutes()>9?this.getMinutes().toString():'0' + this.getMinutes());
    str=str.replace(/m/g,this.getMinutes());
    str=str.replace(/ss|SS/,this.getSeconds()>9?this.getSeconds().toString():'0' + this.getSeconds());
    str=str.replace(/s|S/g,this.getSeconds());
    return str;
};

/**
 * 比较日期差(原型扩展或重载)
 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w'
 * @param {dtEnd} 格式为日期型或者 有效日期格式字符串
 * @type int
 * @returns 比较结果
 */
Date.prototype.dateDiff = function(strInterval, dtEnd) {
    var dtStart = this;
    if (typeof dtEnd == 'string' ) { //如果是字符串转换为日期型
        dtEnd = StringToDate(dtEnd);
    }
    switch (strInterval) {
        case 's' :return parseInt((dtEnd - dtStart) / 1000);
        case 'n' :return parseInt((dtEnd - dtStart) / 60000);
        case 'h' :return parseInt((dtEnd - dtStart) / 3600000);
        case 'd' :return parseInt((dtEnd - dtStart) / 86400000);
        case 'w' :return parseInt((dtEnd - dtStart) / (86400000 * 7));
        case 'm' :return (dtEnd.getMonth()+1)+((dtEnd.getFullYear()-dtStart.getFullYear())*12) - (dtStart.getMonth()+1);
        case 'y' :return dtEnd.getFullYear() - dtStart.getFullYear();
    }
};

/**
 * 日期计算(原型扩展或重载)
 * @param {strInterval} 日期类型:'y、m、d、h、n、s、w'
 * @param {Number} 数量
 * @type Date
 * @returns 计算后的日期
 */
Date.prototype.dateAdd = function(strInterval, Number) {
    var dtTmp = this;
    switch (strInterval) {
        case 's' :return new Date(Date.parse(dtTmp) + (1000 * Number));
        case 'n' :return new Date(Date.parse(dtTmp) + (60000 * Number));
        case 'h' :return new Date(Date.parse(dtTmp) + (3600000 * Number));
        case 'd' :return new Date(Date.parse(dtTmp) + (86400000 * Number));
        case 'w' :return new Date(Date.parse(dtTmp) + ((86400000 * 7) * Number));
        case 'q' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number*3, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
        case 'm' :return new Date(dtTmp.getFullYear(), (dtTmp.getMonth()) + Number, dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
        case 'y' :return new Date((dtTmp.getFullYear() + Number), dtTmp.getMonth(), dtTmp.getDate(), dtTmp.getHours(), dtTmp.getMinutes(), dtTmp.getSeconds());
    }
};

/**
 * 取得日期数据信息(原型扩展或重载)
 * @param {interval} 日期类型:'y、m、d、h、n、s、w'
 * @type int
 * @returns 指定的日期部分
 */
Date.prototype.datePart = function(interval){
    var myDate = this;
    var partStr='';
    var Week = ['日','一','二','三','四','五','六'];
    switch (interval)
    {
        case 'y' :partStr = myDate.getFullYear();break;
        case 'm' :partStr = myDate.getMonth()+1;break;
        case 'd' :partStr = myDate.getDate();break;
        case 'w' :partStr = Week[myDate.getDay()];break;
        case 'ww' :partStr = myDate.WeekNumOfYear();break;
        case 'h' :partStr = myDate.getHours();break;
        case 'n' :partStr = myDate.getMinutes();break;
        case 's' :partStr = myDate.getSeconds();break;
    }
    return partStr;
};


/**
 * 把日期分割成数组(原型扩展或重载)
 * @type array
 * @returns 日期数组
 */
Date.prototype.toArray = function() {
    var myDate = this;
    var myArray = Array();
    myArray[0] = myDate.getFullYear();
    myArray[1] = myDate.getMonth()+1;
    myArray[2] = myDate.getDate();
    myArray[3] = myDate.getHours();
    myArray[4] = myDate.getMinutes();
    myArray[5] = myDate.getSeconds();
    return myArray;
};

/**
 * 判断闰年(原型扩展或重载)
 * @type boolean
 * @returns 是否为闰年 true/false
 */
Date.prototype.isLeapYear = function() {
    return (0==this.getYear()%4&&((this.getYear()%100!=0)||(this.getYear()%400==0)));
};

/******************String 表单检查***********************/
//检查是否是URL地址
String.prototype.isURL=function(){
    var re=/http[s]?:\/\/([\w-]+.)+[\w-]+(\/[\w-./?%&=]*)?/;
    var result = re.test(this);
    return result;
};

//检查表单是否是email字符串
String.prototype.isEmail=function(){
    var re=/\w+([-+.]\w+)*@\w+([-.]\w+)*.\w+([-.]\w+)*/;
    var result = re.test(this);
    return result;
};

//检查号码,正确格式为:XXXX-XXXXXXX,XXXX-XXXXXXXX,XXX-XXXXXXX,XXX-XXXXXXXX,XXXXXXX,XXXXXXXX
String.prototype.isPhoneNumber=function(){
    var re=/^((\d{3,4})|\d{3,4}-)?\d{7,8}$/;
    var result = re.test(this);
    return result;
};


/******************String 数字检查***********************/
/**
 * 获取字符串长度(原型扩展或重载)
 * @type int
 * @returns 字符串长度
 */
String.prototype.len = function() {
    var arr=this.match(/[^\x00-\xff]/ig);
    return this.length+(arr==null?0:arr.length);
};


//检查是否是浮点数,包括0,包括正浮点数  负浮点数
String.prototype.isFloat=function(){
    var re=/^-?([1-9]\d*.\d+|0.\d*[1-9]\d*|0?.0+|0)$/;
    var result = re.test(this);
    return result;
};

//检查是否是非负浮点数,包括0
String.prototype.isFloatNegativ=function(isContainZero){
    if(isContainZero){
        var re=/(^-([1-9]\d*.\d+|0.\d*[1-9]\d*)$)|(0)/;
        var result = re.test(this);
        return result;
    }else{
        var re=/^-([1-9]\d*.\d+|0.\d*[1-9]\d*)$/;
        var result = re.test(this);
        return result;
    }
};

//检查是否是正浮点数,包括0
String.prototype.isFloatPositive=function(isContainZero){

    if(isContainZero){
        var re=/^[1-9]\d*.\d+|0.\d*[1-9]\d*|0?.0+|0$/;
        var result = re.test(this);
        return result;
    }else{
        var re=/^[1-9]\d*.\d+|0.\d*[1-9]\d*$/;
        var result = re.test(this);
        return result;
    }
};

//检查是否是整数,包括0,正整数,负整数
String.prototype.isInt = function(){
    var re=/^-?\d+$/;
    var result = re.test(this);
    return result;
};

/**
 * 检查是否是正整数
 * isContainZero 是否包含0
 */
String.prototype.isIntPositive = function(isContainZero){
    if(isContainZero){
        var re=/(^[0-9]*[1-9][0-9]*$)|(0)/;
        var result = re.test(this);
        return result;
    }else{
        var re=/^[0-9]*[1-9][0-9]*$/;
        var result = re.test(this);
        return result;
    }
};

/**
 * 检查是否是负整数
 * isContainZero 是否包含0
 */
String.prototype.isIntNegativ = function(isContainZero){
    if(isContainZero){
        var re=/(^-[0-9]*[1-9][0-9]*$)|(0)/;
        var result = re.test(this);
        return result;
    }else{
        var re=/^-[0-9]*[1-9][0-9]*$/;
        var result = re.test(this);
        return result;
    }
};

/******************String***********************/
//检查字符串是否是指定字符串开头,返回true 和 false
String.prototype.isStartWith=function(str){
    var reg=new RegExp("^"+str);
    return reg.test(this);
};
//检查字符串是否是指定字符串结尾,返回true 和 false
String.prototype.isEndWith=function(str){
    var reg=new RegExp(str+"$");
    return reg.test(this);
};

//一个单词首字母大写,返回字符串
String.prototype.capitalize=function(){
    var result = this.charAt(0).toUpperCase()+this.substring(1).toLocaleLowerCase();
    return result;
};
// 保留字母和空格,返回字符串
String.prototype.getEn = function() {
    var result = this.replace(/[^A-Z a-z]/g, "");
    return result;
};
//逆序
String.prototype.reverse = function() {
    return this.split("").reverse().join("");
};
//检查字符串是否包含自定字符串,返回true 和 false
String.prototype.isContains=function(target){
    var myReg = new RegExp(target);
    var result = myReg.test(this);
    return result;
};
//去除两边的空格,返回字符串
String.prototype.trim = function() {
    var result = this.replace(/^\s+|\s+$/g, "");
    return result;
};
// 除去左边空白,返回字符串
String.prototype.trimLeft = function() {
    return this.replace(/^\s+/g, "");
};
// 除去右边空白,返回字符串
String.prototype.trimRight = function() {
    return this.replace(/\s+$/g, "");
};
// 去除所有的空白
String.prototype.delBlank = function() {
    var result = this.replace(/\s+/g, "");
    return result;
};
/**
 * 字符串转换为日期型(原型扩展或重载)
 * @type Date
 * @returns 日期
 */
String.prototype.toDate = function() {
    var converted = Date.parse(this);
    var myDate = new Date(converted);
    if (isNaN(myDate)) {
        var arys= this.split('-');
        myDate = new Date(arys[0],--arys[1],arys[2]);
    }
    return myDate;
};

//将json字符串转为json对象
String.prototype.toJson=function(){
    return (new Function("return " + this))();
};


function obj2str(o){
    var r = [];
    if(typeof o =="string") return "\""+o.replace(/([\'\"\\])/g,"\\$1").replace(/(\n)/g,"\\n").replace(/(\r)/g,"\\r").replace(/(\t)/g,"\\t")+"\"";
    if(typeof o =="undefined") return "undefined";
    if(typeof o == "object"){
        if(o===null) return "null";
        else if(!o.sort){
            for(var i in o)
                r.push(i+":"+obj2str(o[i]))
            r="{"+r.join()+"}"
        }else{
            for(var i =0;i 
  

 

测试方法

 

 

$(function(){
	document.write("--------------------- Date对象扩展 ----------------------------------"+"
"); document.write('new Date().format("yyyy") : ' + new Date().format("yyyy")+"
"); document.write('new Date().format("MM") : ' + new Date().format("MM")+"
"); document.write('new Date().format("dd") : ' + new Date().format("dd")+"
"); document.write('new Date().format("yyyy-MM") : ' + new Date().format("yyyy-MM")+"
"); document.write('new Date().format("yyyy-MM-dd") : ' + new Date().format("yyyy-MM-dd")+"
"); document.write('new Date().format("MM-dd") : ' + new Date().format("MM-dd")+"
"); document.write('new Date().format("hh:mm:ss") : ' + new Date().format("hh:mm:ss")+"
"); document.write('new Date().format("hh") : ' + new Date().format("hh")+"
"); document.write('new Date().format("mm") : ' + new Date().format("mm")+"
"); document.write('new Date().format("ss") : ' + new Date().format("ss")+"
"); document.write('new Date().format("mm:ss") : ' + new Date().format("mm:ss") +"
"); document.write("--------------------- String对象扩展 ----------------------------------"+"
"); var myName = " huang biao "; //字符串长度 document.write("myName.len() : " + myName.len() +"
");//12 document.write("myName.trimLeft().len() : " + myName.trimLeft().len() +"
");//11 document.write("myName.trimRight().len() : " + myName.trimRight().len() +"
");//11 //去除空格 document.write("myName.trim().len() : " + myName.trim().len() +"
");//10 //删除空格 document.write("myName.delBlank() : " + myName.delBlank() +"
");//huangbiao //倒序 document.write("myName.delBlank().reverse() : " + myName.delBlank().reverse() +"
");//oaibgnauh document.write(" myName.isContains('huang') : " + myName.isContains("huang") +"
"); document.write(" myName.isContains('liu') : " + myName.isContains("liu") +"
"); document.write("myName.trim().capitalize() : " + myName.trim().capitalize() +"
"); document.write("myName.trim().isStartWith(\"huang\") : " + myName.trim().isStartWith("huang") +"
"); document.write("myName.trim().isStartWith(\"biao\") : " + myName.trim().isStartWith("biao") +"
"); document.write("myName.trim().isEndWith(\"huang\") : " + myName.trim().isEndWith("huang") +"
"); document.write("myName.trim().isEndWith(\"biao\") : " + myName.trim().isEndWith("biao") +"
"); document.write("--------------------- String对象扩展 内容校验 ----------------------------------"+"
"); document.write(" '0'.isInt() : " + '0'.isInt() +"
"); document.write(" '-12'.isInt() : " + '-12'.isInt() +"
"); document.write(" '12'.isInt() : " + '12'.isInt() +"
"); document.write("'12.3'.isInt() : " + '12.3'.isInt() +"
"); document.write("-----------"+"
"); document.write(" '0'.isIntPositive() : " + '0'.isIntPositive() +"
"); //是否包含0 document.write(" '0'.isIntPositive(true) : " + '0'.isIntPositive(true) +"
"); document.write(" '00'.isIntPositive(true) : " + '00'.isIntPositive(true) +"
"); document.write(" '-12'.isIntPositive() : " + '-12'.isIntPositive() +"
"); document.write(" '12'.isIntPositive() : " + '12'.isIntPositive() +"
"); document.write("'12.3'.isIntPositive() : " + '12.3'.isIntPositive() +"
"); document.write("-----------"+"
"); document.write(" '0'.isIntNegativ() : " + '0'.isIntNegativ() +"
"); //是否包含0 document.write(" '0'.isIntNegativ(true) : " + '0'.isIntNegativ(true) +"
"); document.write(" '00'.isIntNegativ(true) : " + '00'.isIntNegativ(true) +"
"); document.write(" '-12'.isIntNegativ() : " + '-12'.isIntNegativ() +"
"); document.write(" '12'.isIntNegativ() : " + '12'.isIntNegativ() +"
"); document.write("'12.3'.isIntNegativ() : " + '12.3'.isIntNegativ() +"
"); document.write("-----------"+"
"); document.write(" '0'.isFloat() : " + '0'.isFloat() +"
"); document.write(" '0'.isFloat(true) : " + '0'.isFloat(true) +"
"); document.write(" '-12'.isFloat() : " + '-12'.isFloat() +"
"); document.write(" '12'.isFloat() : " + '12'.isFloat() +"
"); document.write("'12.3'.isFloat() : " + '12.3'.isFloat() +"
"); document.write("'-12.3'.isFloat() : " + '-12.3'.isFloat() +"
"); document.write("'-12.3.3'.isFloat() : " + '-12.3.3'.isFloat() +"
"); document.write("-----------"+"
"); document.write(" '0'.isFloatNegativ() : " + '0'.isFloatNegativ() +"
"); document.write(" '0'.isFloatNegativ(true) : " + '0'.isFloatNegativ(true) +"
"); document.write(" '-12'.isFloatNegativ() : " + '-12'.isFloatNegativ() +"
"); document.write(" '12'.isFloatNegativ() : " + '12'.isFloatNegativ() +"
"); document.write("'12.3'.isFloatNegativ() : " + '12.3'.isFloatNegativ() +"
"); document.write("'-12.3'.isFloatNegativ() : " + '-12.3'.isFloatNegativ() +"
"); document.write("'-12.3.3'.isFloatNegativ() : " + '-12.3.3'.isFloatNegativ() +"
"); document.write("-----------"+"
"); document.write(" '0'.isFloatPositive() : " + '0'.isFloatPositive() +"
"); document.write(" '0'.isFloatPositive(true) : " + '0'.isFloatPositive(true) +"
"); document.write(" '-12'.isFloatPositive() : " + '-12'.isFloatPositive() +"
"); document.write(" '12'.isFloatPositive() : " + '12'.isFloatPositive() +"
"); document.write("'12.3'.isFloatPositive() : " + '12.3'.isFloatPositive() +"
"); document.write("'-12.3'.isFloatPositive() : " + '-12.3'.isFloatPositive() +"
"); document.write("'-12.3.3'.isFloatPositive() : " + '-12.3.3'.isFloatPositive() +"
"); document.write("-----------"+"
"); var personObj = { "name":"huangbiao", age:18 }; document.write("obj2str(personObj) : " + obj2str(personObj) +"
"); document.write("JsonToString(personObj) : " + JsonToString(personObj) +"
"); });

 

 

 

 

 

 

你可能感兴趣的:(扩展javascript内置对象)