扩展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; i<this.length; i++) if (this[i]==o) return i;
    return -1;
};

/**
 *  检索数组元素(原型扩展或重载)
* @param {o} 被检索的元素值
* @type int
* @returns 元素索引
*/
Array.prototype.contains = function(o) {
    var index = -1;
    for(var i=0;i<this.length;i++){if(this[i]==o){index = i;break;}}
    return index;
};

/******************Date 对象扩展***********************/


Date.prototype.getWeek = function () {
    var a = new Array("日", "一", "二", "三", "四", "五", "六");
    var week = new Date().getDay();
    var str = a[week];
    return str;
};

//将指定的秒数加到此实例的值上
Date.prototype.addSeconds = function (value) {
    var second = this.getSeconds();
    this.setSeconds(second + value);
    return this;
};

//将指定的分钟数加到此实例的值上
Date.prototype.addMinutes = function (value) {
    var minute = this.getMinutes();
    this.setMinutes(minute + value);
    return this;
};

//将指定的小时数加到此实例的值上
Date.prototype.addHours = function (value) {
    var hour = this.getHours();
    this.setHours(hour + value);
    return this;
};


//将指定的天数加到此实例的值上
Date.prototype.addDays = function (value) {
    var date = this.getDate();
    this.setDate(date + value);
    return this;
};


//将指定的星期数加到此实例的值上
Date.prototype.addWeeks = function (value) {
    return this.addDays(value * 7);
};

//将指定的月份数加到此实例的值上
Date.prototype.addMonths = function (value) {
    var month = this.getMonth();
    this.setMonth(month + value);
    return this;
};
//将指定的年份数加到此实例的值上
Date.prototype.addYears = function (value) {
    var year = this.getFullYear();
    this.setFullYear(year + value);
    return this;
};

/**
 * 日期格式化(原型扩展或重载)
 * 格式 YYYY/yyyy/YY/yy 表示年份
 * MM/M 月份
 * W/w 星期
 * dd/DD/d/D 日期
 * hh/HH/h/H 时间
 * mm/m 分钟
 * ss/SS/s/S 秒
 * @param {formatStr} 格式模版
 * @type string
 * @returns 日期字符串
 */
Date.prototype.format = function(formatStr){
    var str = formatStr;
    var Week = ['日','一','二','三','四','五','六'];
    str=str.replace(/yyyy|YYYY/,this.getFullYear());
    str=str.replace(/yy|YY/,(this.getYear() % 100)>9?(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<o.length;i++)
                r.push(obj2str(o[i]))
            r="["+r.join()+"]"
        }
        return r;
    }
    return o.toString();
}

//将json对象转为String
function JsonToString(o) {
    var arr = [];
    var fmt = function(s) {
        if (typeof s == 'object' && s != null) return JsonToStr(s);
        return /^(string)$/.test(typeof s) ? '"' + s + '"' : s;
    }
    for (var i in o)
        arr.push("'" + i + "':" + fmt(o[i]));
    return '{' + arr.join(',') + '}';
}

测试方法

$(function(){
	document.write("--------------------- Date对象扩展 ----------------------------------"+"<br>");
	document.write('new Date().format("yyyy") : ' + new Date().format("yyyy")+"<br>");
	document.write('new Date().format("MM") : ' + new Date().format("MM")+"<br>");
	document.write('new Date().format("dd") : ' + new Date().format("dd")+"<br>");
	document.write('new Date().format("yyyy-MM") : ' + new Date().format("yyyy-MM")+"<br>");
	document.write('new Date().format("yyyy-MM-dd") : ' + new Date().format("yyyy-MM-dd")+"<br>");
	document.write('new Date().format("MM-dd") : ' + new Date().format("MM-dd")+"<br>");
	document.write('new Date().format("hh:mm:ss") : ' + new Date().format("hh:mm:ss")+"<br>");
	document.write('new Date().format("hh") : ' + new Date().format("hh")+"<br>");
	document.write('new Date().format("mm") : ' + new Date().format("mm")+"<br>");
	document.write('new Date().format("ss") : ' + new Date().format("ss")+"<br>");
	document.write('new Date().format("mm:ss") : ' + new Date().format("mm:ss") +"<br>");

	document.write("--------------------- String对象扩展 ----------------------------------"+"<br>");
	var myName = " huang biao ";
	//字符串长度
	document.write("myName.len() : " + myName.len() +"<br>");//12
	document.write("myName.trimLeft().len() : " + myName.trimLeft().len() +"<br>");//11
	document.write("myName.trimRight().len() : " + myName.trimRight().len() +"<br>");//11
	//去除空格
	document.write("myName.trim().len() : " + myName.trim().len() +"<br>");//10
	//删除空格
	document.write("myName.delBlank() : " + myName.delBlank() +"<br>");//huangbiao
	//倒序
	document.write("myName.delBlank().reverse() : " + myName.delBlank().reverse() +"<br>");//oaibgnauh
	document.write(" myName.isContains('huang') : " + myName.isContains("huang") +"<br>");
	document.write(" myName.isContains('liu') : " + myName.isContains("liu") +"<br>");
	document.write("myName.trim().capitalize() : " + myName.trim().capitalize() +"<br>");
	document.write("myName.trim().isStartWith(\"huang\") : " + myName.trim().isStartWith("huang") +"<br>");
	document.write("myName.trim().isStartWith(\"biao\") : " + myName.trim().isStartWith("biao") +"<br>");
	document.write("myName.trim().isEndWith(\"huang\") : " + myName.trim().isEndWith("huang") +"<br>");
	document.write("myName.trim().isEndWith(\"biao\") : " + myName.trim().isEndWith("biao") +"<br>");

	document.write("--------------------- String对象扩展 内容校验 ----------------------------------"+"<br>");

	document.write(" '0'.isInt() : " + '0'.isInt() +"<br>");
	document.write(" '-12'.isInt() : " + '-12'.isInt() +"<br>");
	document.write(" '12'.isInt() : " + '12'.isInt() +"<br>");
	document.write("'12.3'.isInt() : " + '12.3'.isInt() +"<br>");
	document.write("-----------"+"<br>");
	document.write(" '0'.isIntPositive() : " + '0'.isIntPositive() +"<br>");
	//是否包含0
	document.write(" '0'.isIntPositive(true) : " + '0'.isIntPositive(true) +"<br>");
	document.write(" '00'.isIntPositive(true) : " + '00'.isIntPositive(true) +"<br>");
	document.write(" '-12'.isIntPositive() : " + '-12'.isIntPositive() +"<br>");
	document.write(" '12'.isIntPositive() : " + '12'.isIntPositive() +"<br>");
	document.write("'12.3'.isIntPositive() : " + '12.3'.isIntPositive() +"<br>");
	document.write("-----------"+"<br>");
	document.write(" '0'.isIntNegativ() : " + '0'.isIntNegativ() +"<br>");
	//是否包含0
	document.write(" '0'.isIntNegativ(true) : " + '0'.isIntNegativ(true) +"<br>");
	document.write(" '00'.isIntNegativ(true) : " + '00'.isIntNegativ(true) +"<br>");
	document.write(" '-12'.isIntNegativ() : " + '-12'.isIntNegativ() +"<br>");
	document.write(" '12'.isIntNegativ() : " + '12'.isIntNegativ() +"<br>");
	document.write("'12.3'.isIntNegativ() : " + '12.3'.isIntNegativ() +"<br>");

	document.write("-----------"+"<br>");
	document.write(" '0'.isFloat() : " + '0'.isFloat() +"<br>");
	document.write(" '0'.isFloat(true) : " + '0'.isFloat(true) +"<br>");
	document.write(" '-12'.isFloat() : " + '-12'.isFloat() +"<br>");
	document.write(" '12'.isFloat() : " + '12'.isFloat() +"<br>");
	document.write("'12.3'.isFloat() : " + '12.3'.isFloat() +"<br>");
	document.write("'-12.3'.isFloat() : " + '-12.3'.isFloat() +"<br>");
	document.write("'-12.3.3'.isFloat() : " + '-12.3.3'.isFloat() +"<br>");

	document.write("-----------"+"<br>");
	document.write(" '0'.isFloatNegativ() : " + '0'.isFloatNegativ() +"<br>");
	document.write(" '0'.isFloatNegativ(true) : " + '0'.isFloatNegativ(true) +"<br>");
	document.write(" '-12'.isFloatNegativ() : " + '-12'.isFloatNegativ() +"<br>");
	document.write(" '12'.isFloatNegativ() : " + '12'.isFloatNegativ() +"<br>");
	document.write("'12.3'.isFloatNegativ() : " + '12.3'.isFloatNegativ() +"<br>");
	document.write("'-12.3'.isFloatNegativ() : " + '-12.3'.isFloatNegativ() +"<br>");
	document.write("'-12.3.3'.isFloatNegativ() : " + '-12.3.3'.isFloatNegativ() +"<br>");

	document.write("-----------"+"<br>");
	document.write(" '0'.isFloatPositive() : " + '0'.isFloatPositive() +"<br>");
	document.write(" '0'.isFloatPositive(true) : " + '0'.isFloatPositive(true) +"<br>");
	document.write(" '-12'.isFloatPositive() : " + '-12'.isFloatPositive() +"<br>");
	document.write(" '12'.isFloatPositive() : " + '12'.isFloatPositive() +"<br>");
	document.write("'12.3'.isFloatPositive() : " + '12.3'.isFloatPositive() +"<br>");
	document.write("'-12.3'.isFloatPositive() : " + '-12.3'.isFloatPositive() +"<br>");
	document.write("'-12.3.3'.isFloatPositive() : " + '-12.3.3'.isFloatPositive() +"<br>");

	document.write("-----------"+"<br>");
	var personObj = {
		"name":"huangbiao",
		age:18
	};
	document.write("obj2str(personObj) : " + obj2str(personObj) +"<br>");
	document.write("JsonToString(personObj) : " + JsonToString(personObj) +"<br>");

});

猜你喜欢

转载自hbiao68.iteye.com/blog/2315417