本文實例講述了JS擴展方法實現技巧。分享給大家供大家參考。具體分析如下:
JS擴展方法與C#的擴展方法非常相似,也是可以鏈式調用的,也是通過對某個類的擴展寫法來實現。這個東西非常好用,如果將預先寫好的方法放到一個js里面引用的話,那么后面寫js將非常有趣。
下面給出一個例子:
<head> <title>測試JS擴展方法</title> <script type="text/javascript"> // 合并多個空白為一個空白 String.prototype.ResetBlank = function() { //對字符串擴展 var regEx = //s+/g; return this.replace(regEx, ' '); }; window.onload = function() { var str = "你 在他想還好嗎?"; alert(str); str = str.ResetBlank(); //這樣就能夠調用了,跟C#的很像吧! alert(str); } </script></head>好像只是告訴自己有這樣一個東西而已;
下面給出找到的一個非常不錯的js擴展:
// 清除兩邊的空格 String.prototype.trim = function() { return this.replace(/(^/s*)|(/s*$)/g, ''); }; // 合并多個空白為一個空白 String.prototype.ResetBlank = function() { var regEx = //s+/g; return this.replace(regEx, ' '); }; // 保留數字 String.prototype.GetNum = function() { var regEx = /[^/d]/g; return this.replace(regEx, ''); }; // 保留中文 String.prototype.GetCN = function() { var regEx = /[^/u4e00-/u9fa5/uf900-/ufa2d]/g; return this.replace(regEx, ''); }; // String轉化為Number String.prototype.ToInt = function() { return isNaN(parseInt(this)) ? this.toString() : parseInt(this); }; // 得到字節長度 String.prototype.GetLen = function() { var regEx = /^[/u4e00-/u9fa5/uf900-/ufa2d]+$/; if (regEx.test(this)) { return this.length * 2; } else { var oMatches = this.match(/[/x00-/xff]/g); var oLength = this.length * 2 - oMatches.length; return oLength; } }; // 獲取文件全名 String.prototype.GetFileName = function() { var regEx = /^.*//([^///?]*).*$/; return this.replace(regEx, '$1'); }; // 獲取文件擴展名 String.prototype.GetExtensionName = function() { var regEx = /^.*//[^//]*(/.[^/./?]*).*$/; return this.replace(regEx, '$1'); }; //替換所有String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) { if (!RegExp.prototype.isPrototypeOf(reallyDo)) { return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi" : "g")), replaceWith); } else { return this.replace(reallyDo, replaceWith); } }; //格式化字符串 add By 劉景寧 2010-12-09 String.Format = function() { if (arguments.length == 0) { return ''; } if (arguments.length == 1) { return arguments[0]; } var reg = /{(/d+)?}/g; var args = arguments; var result = arguments[0].replace(reg, function($0, $1) { return args[parseInt($1) + 1]; }); return result; }; // 數字補零 Number.prototype.LenWithZero = function(oCount) { var strText = this.toString(); while (strText.length < oCount) { strText = '0' + strText; } return strText; }; // Unicode還原 Number.prototype.ChrW = function() { return String.fromCharCode(this); }; // 數字數組由小到大排序 Array.prototype.Min2Max = function() { var oValue; for (var i = 0; i < this.length; i++) { for (var j = 0; j <= i; j++) { if (this[i] < this[j]) { oValue = this[i]; this[i] = this[j]; this[j] = oValue; } } } return this; }; // 數字數組由大到小排序 Array.prototype.Max2Min = function() { var oValue; for (var i = 0; i < this.length; i++) { for (var j = 0; j <= i; j++) { if (this[i] > this[j]) { oValue = this[i]; this[i] = this[j]; this[j] = oValue; } } } return this; }; // 獲得數字數組中最大項 Array.prototype.GetMax = function() { var oValue = 0; for (var i = 0; i < this.length; i++) { if (this[i] > oValue) { oValue = this[i]; } } return oValue; }; // 獲得數字數組中最小項 Array.prototype.GetMin = function() { var oValue = 0; for (var i = 0; i < this.length; i++) { if (this[i] < oValue) { oValue = this[i]; } } return oValue; }; // 獲取當前時間的中文形式 Date.prototype.GetCNDate = function() { var oDateText = ''; oDateText += this.getFullYear().LenWithZero(4) + new Number(24180).ChrW(); oDateText += this.getMonth().LenWithZero(2) + new Number(26376).ChrW(); oDateText += this.getDate().LenWithZero(2) + new Number(26085).ChrW(); oDateText += this.getHours().LenWithZero(2) + new Number(26102).ChrW(); oDateText += this.getMinutes().LenWithZero(2) + new Number(20998).ChrW(); oDateText += this.getSeconds().LenWithZero(2) + new Number(31186).ChrW(); oDateText += new Number(32).ChrW() + new Number(32).ChrW() + new Number(26143).ChrW() + new Number(26399).ChrW() + new String('26085199682010819977222352011620845').substr(this.getDay() * 5, 5).ToInt().ChrW(); return oDateText; }; //擴展Date格式化 Date.prototype.Format = function(format) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小時 "H+": this.getHours(), //小時 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; var week = { "0": "/u65e5", "1": "/u4e00", "2": "/u4e8c", "3": "/u4e09", "4": "/u56db", "5": "/u4e94", "6": "/u516d" }; if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } if (/(E+)/.test(format)) { format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "/u661f/u671f" : "/u5468") : "") + week[this.getDay() + ""]); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return format; } Date.prototype.Diff = function(interval, objDate) { //若參數不足或 objDate 不是日期類型
主站蜘蛛池模板:
偃师市|
奎屯市|
永和县|
凤庆县|
丹江口市|
连江县|
文登市|
金秀|
武宣县|
西丰县|
那曲县|
灵丘县|
平陆县|
罗江县|
祁阳县|
长葛市|
广德县|
古浪县|
仁化县|
西吉县|
嘉祥县|
于都县|
永春县|
固阳县|
富源县|
蓬溪县|
乌鲁木齐市|
镇赉县|
浦城县|
邵阳市|
靖州|
白城市|
嘉义市|
琼海市|
临城县|
西贡区|
扎囊县|
壤塘县|
临潭县|
曲靖市|
石棉县|