网络编程
位置:首页>> 网络编程>> JavaScript>> 基于prototype扩展的JavaScript常用函数库

基于prototype扩展的JavaScript常用函数库

  发布时间:2023-08-24 15:09:57 

标签:prototype,扩展

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

/**
* 日期格式化(原型扩展或重载)
* 格式 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 int
* @returns 天数
*/
Date.prototype.daysOfMonth = function(){
var myDate = this;
var ary = myDate.toArray();
var date1 = (new Date(ary[0],ary[1]+1,1));
var date2 = date1.dateAdd('m',1);
var result = daysDiff(date1.format('yyyy-MM-dd'),date2.format('yyyy-MM-dd'));
return result;
}

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

/**
* 比较两个日期的天数差(自定义)
* @param {DateOne} 日期一
* @param {DateOne} 日期二
* @type int
* @returns 比较结果
*/
function daysDiff(DateOne,DateTwo)
{
var OneMonth = DateOne.substring(5,DateOne.lastIndexOf ('-'));
var OneDay = DateOne.substring(DateOne.length,DateOne.lastIndexOf ('-')+1);
var OneYear = DateOne.substring(0,DateOne.indexOf ('-'));

var TwoMonth = DateTwo.substring(5,DateTwo.lastIndexOf ('-'));
var TwoDay = DateTwo.substring(DateTwo.length,DateTwo.lastIndexOf ('-')+1);
var TwoYear = DateTwo.substring(0,DateTwo.indexOf ('-'));

var cha=((Date.parse(OneMonth+'/'+OneDay+'/'+OneYear)- Date.parse(TwoMonth+'/'+TwoDay+'/'+TwoYear))/86400000);
return Math.abs(cha);
}

/**
* 日期计算(自定义)
* @param {strInterval} 日期类型:'y、m、d、h、n、s、w'
* @param {Number} 数量
* @param {prmDate} 原日期
* @type Date
* @returns 计算后的日期
*/
function dateAdd(interval,number,prmDate){
number = parseInt(number);
if (typeof(prmDate)=="string"){
prmDate = prmDate.split(/\D/);
--prmDate[1];
eval("var prmDate = new Date("+prmDate.join(",")+")");
}
if (typeof(prmDate)=="object"){
var prmDate = prmDate
}
switch(interval){
case "y": prmDate.setFullYear(prmDate.getFullYear()+number); break;
case "m": prmDate.setMonth(prmDate.getMonth()+number); break;
case "d": prmDate.setDate(prmDate.getDate()+number); break;
case "w": prmDate.setDate(prmDate.getDate()+7*number); break;
case "h": prmDate.setHours(prmDate.getHour()+number); break;
case "n": prmDate.setMinutes(prmDate.getMinutes()+number); break;
case "s": prmDate.setSeconds(prmDate.getSeconds()+number); break;
case "l": prmDate.setMilliseconds(prmDate.getMilliseconds()+number); break;
}
return prmDate;
}

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

/**
* 字符串左取指定个数的字符(原型扩展或重载)
* @param {num} 获取个数
* @type string
* @returns 匹配的字符串
*/
String.prototype.left = function(num,mode) {
if(!/\d+/.test(num)) return(this);
var str = this.substr(0,num);
if(!mode) return str;
var n = str.len() - str.length;
num = num - parseInt(n/2);
return this.substr(0,num);
}

/**
* 字符串右取指定个数的字符(原型扩展或重载)
* @param {num} 获取个数
* @type string
* @returns 匹配的字符串
*/
String.prototype.right = function(num,mode) {
if(!/\d+/.test(num)) return(this);
var str = this.substr(this.length-num);
if(!mode) return str;
var n = str.len() - str.length;
num = num - parseInt(n/2);
return this.substr(this.length-num);
}

/**
* 字符串包含(原型扩展或重载)
* @param {string: str} 要搜索的子字符串
* @param {bool: mode} 是否忽略大小写
* @type int
* @returns 匹配的个数
*/
String.prototype.matchCount = function(str,mode) {
return eval("this.match(/("+str+")/g"+(mode?"i":"")+").length");
}

/**
* 去除左右空格(原型扩展或重载)
* @type string
* @returns 处理后的字符串
*/
String.prototype.trim = function() {
return this.replace(/(^\s*)|(\s*$)/g,"");
}

/**
* 去除左空格(原型扩展或重载)
* @type string
* @returns 处理后的字符串
*/
String.prototype.lTrim = function() {
return this.replace(/(^\s*)/g, "");
}

/**
* 去除右空格(原型扩展或重载)
* @type string
* @returns 处理后的字符串
*/
String.prototype.rTrim = function() {
return this.replace(/(\s*$)/g, "");
}

/**
* 字符串转换为日期型(原型扩展或重载)
* @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;
}
0
投稿

猜你喜欢

  • 生活形态(Life-Style)的概念源自社会学与心理学,六十年代即有学者正式引用到市场营销领域,并运用其心理影射与多维度等特质,着力解释人
  • 本文实例分析了JavaScript事件委托技术。分享给大家供大家参考。具体分析如下:如果一个整体页面里有大量的按钮.我们就要为每一个按钮绑定
  • isnull()Null 值指出变量不包含有效数据。Null 与 Empty 不同,后者指出变量未经初始化。Null 与零长度字符串 (&q
  • 邹建 2004.4 代码如下:/*--调用示例 exec p_lockinfo1 --*/ alter proc p_lockinfo1
  • 当一个页面上有一百个表单项,你是怎么获取上面的值勤的?这是一段简单的代码,你试试这段代码,试过后,欢迎留言说一下你的想法?index.asp
  • 前提条件:1.安装好Wampserver64(版本不限)2.Wampserver64软件启动后 变为绿色如:3.在数据库里面创建好名为&am
  • 写过稍微大型一点 ASP 的人都知道,Session 这个对象真是好用,它可以用来记录使用者私有的资料变量,既安全又方便。但是你真的知道 S
  • 编号标准宗地编码(landCode)所在区段编码(sectCode)1131001BG001G0012131001BG002G0013131
  • 一个改进的仿google页面拖拽效果,移植方便。web2.0网站经常会用有这个拖拽页面布局的功能,如果你也想给你的网站加上这个有趣的功能,不
  • 微软现在已经进入了ASP.NET 2.0和Visual Web Developer 2005发布版最
  • 赠送QQ秀流程是QQ秀商城关键流程之一,占了收入最直接的一部分。它的优化是后续商城流程优化的重要参考。OK,现在就用TA做例子,分享一下流程
  • sql exist的妙用create table b(a varchar(10),b varchar(10),c varchar(10))i
  • 我生平不爱学习,所以说不出什么洋洋洒洒的大道理,貌似也写不出妙语连珠的学术文章,有感于现在宅到极致的生活状态,故一篇图文并茂的文章诞生了(大
  • 假如读者已经熟悉了ASP 2.0,并正在寻找3.0版本中的实际改变的列表,那么将在下面发现这些信息。假如读者是一个ASP的初学者,可以越过本
  • 方法一【推荐】、用js插入flash,可防止虚线框激活建立一个ShowFlash.js文件,拷贝以下代码:function sho
  • 你是否有时想知道什么人访问你的站点,什么时间,IP地址等。下面我就这个问题向大家来阐述一下。这个例子使用文本文件来写入用户的信息创建一个lo
  • 问:如何在SQL Enterprise Manager version 6.5下操作SQL Server 6.0的服务器?答:在使用SQL
  • 下面是我写的NumericStepper:谢谢 果果 和 Rimifon , 我对代码进行了完善, 支持自适应小数位数:
  • 目前,我们要在网页中使用圆角效果,总是通过切图然后嵌套很多div,用背景来实现圆角效果。对于前端开发工程师来说,圆角的确是一个让人又爱又恨的
  • 感谢 Dawn CSS Reset 的尝试和建议。针对字体的写法,觉得需要说明一下:body,button, input, select,
手机版 网络编程 asp之家 www.aspxhome.com