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


Posted in Javascript onNovember 30, 2010
/** 
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; 
}
Javascript 相关文章推荐
JavaScript Object的extend是一个常用的功能
Dec 02 Javascript
JQuery中form验证出错信息的查看方法
Oct 08 Javascript
node爬取微博的数据的简单封装库nodeweibo使用指南
Jan 02 Javascript
原生javascript实现图片滚动、延时加载功能
Jan 12 Javascript
JS html时钟制作代码分享
Mar 03 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
May 10 Javascript
用javascript获取任意颜色的更亮或更暗颜色值示例代码
Jul 21 Javascript
vue项目前端埋点的实现
Mar 06 Javascript
微信小程序点击列表跳转到对应详情页过程解析
Sep 26 Javascript
基于JavaScript实现十五拼图代码实例
Apr 26 Javascript
Vue中的nextTick作用和几个简单的使用场景
Jan 25 Vue.js
canvas绘制折线路径动画实现
May 12 Javascript
关于UTF-8的客户端用AJAX方式获取GB2312的服务器端乱码问题的解决办法
Nov 30 #Javascript
学习面向对象之面向对象的术语
Nov 30 #Javascript
学习面向对象之面向对象的基本概念:对象和其他基本要素
Nov 30 #Javascript
基于JQuery的asp.net树实现代码
Nov 30 #Javascript
JQUERY设置IFRAME的SRC值的代码
Nov 30 #Javascript
juqery 学习之四 筛选过滤
Nov 30 #Javascript
juqery 学习之四 筛选查找
Nov 30 #Javascript
You might like
对淘宝URL中ID提取的PHP代码
2013/09/01 PHP
php写的AES加密解密类分享
2014/06/20 PHP
php操作redis常见方法示例【key与value操作】
2020/04/14 PHP
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
Javascript 各浏览器的 Javascript 效率对比
2008/01/23 Javascript
jquery实现excel导出的方法
2013/04/04 Javascript
JS鼠标滑过图片时切换图片实现思路
2013/09/12 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
jQuery层动画定位滑动效果的方法
2015/04/30 Javascript
解决JS无法调用Controller问题的方法
2015/12/31 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
浅析Javascript ES6中的原生Promise
2016/08/25 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
详解Nodejs之npm&amp;package.json
2017/06/15 NodeJs
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
2019/05/30 NodeJs
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
JQuery使用数组遍历跳出each循环
2020/09/01 jQuery
Openlayers学习之地图比例尺控件
2020/09/28 Javascript
jQuery使用hide()、toggle()函数实现相机品牌展示隐藏功能
2021/01/29 jQuery
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
TensorFlow2.X使用图片制作简单的数据集训练模型
2020/04/08 Python
sklearn的predict_proba使用说明
2020/06/28 Python
树莓派4B安装Tensorflow的方法步骤
2020/07/16 Python
Python用Jira库来操作Jira
2020/12/28 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
同事吵架检讨书
2014/02/05 职场文书
《曹刿论战》教学反思
2014/03/02 职场文书
给老师的一封建议书
2014/03/13 职场文书
公证处委托书
2015/01/28 职场文书
Python中X[:,0]和X[:,1]的用法
2021/05/10 Python