js一些方法的扩展

  1 //JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实现。这个东西非常好用,如果将预先写好的方法放到一个js里面引用的话,那么后面写js将非常有趣。
  2
  3 //下面给出一个例子:
  4
  5
  6 // <head>
  7 //     <title>测试JS扩展方法</title>
  8 //     <script type="text/javascript">
  9 //         // 合并多个空白为一个空白
 10 //         String.prototype.ResetBlank = function() {        //对字符串扩展
 11 //             var regEx = /\s+/g;
 12 //             return this.replace(regEx, ‘ ‘);
 13 //         };
 14
 15 //         window.onload = function()
 16 //         {
 17 //             var str = "你      在他想还好吗?";
 18 //             alert(str);
 19 //             str = str.ResetBlank();        //这样就能够调用了,跟C#的很像吧!
 20 //             alert(str);
 21 //         }
 22 //     </script>
 23 // </head>
 24
 25  // 好像只是告诉自己有这样一个东西而已;
 26
 27  // 下面给出找到的一个非常不错的js扩展:
 28
 29 // 清除两边的空格
 30 String.prototype.trim = function() {
 31     return this.replace(/(^\s*)|(\s*$)/g, ‘‘);
 32 };
 33 // 合并多个空白为一个空白
 34 String.prototype.ResetBlank = function() {
 35     var regEx = /\s+/g;
 36     return this.replace(regEx, ‘ ‘);
 37 };
 38
 39 // 保留数字
 40 String.prototype.GetNum = function() {
 41     var regEx = /[^\d]/g;
 42     return this.replace(regEx, ‘‘);
 43 };
 44
 45 // 保留中文
 46 String.prototype.GetCN = function() {
 47     var regEx = /[^\u4e00-\u9fa5\uf900-\ufa2d]/g;
 48     return this.replace(regEx, ‘‘);
 49 };
 50
 51 // String转化为Number
 52 String.prototype.ToInt = function() {
 53     return isNaN(parseInt(this)) ? this.toString() : parseInt(this);
 54 };
 55
 56 // 得到字节长度
 57 String.prototype.GetLen = function() {
 58     var regEx = /^[\u4e00-\u9fa5\uf900-\ufa2d]+$/;
 59     if (regEx.test(this)) {
 60         return this.length * 2;
 61     } else {
 62         var oMatches = this.match(/[\x00-\xff]/g);
 63         var oLength = this.length * 2 - oMatches.length;
 64         return oLength;
 65     }
 66 };
 67
 68 // 获取文件全名
 69 String.prototype.GetFileName = function() {
 70     var regEx = /^.*\/([^\/\?]*).*$/;
 71     return this.replace(regEx, ‘$1‘);
 72 };
 73
 74 // 获取文件扩展名
 75 String.prototype.GetExtensionName = function() {
 76     var regEx = /^.*\/[^\/]*(\.[^\.\?]*).*$/;
 77     return this.replace(regEx, ‘$1‘);
 78 };
 79
 80 //替换所有
 81 String.prototype.replaceAll = function(reallyDo, replaceWith, ignoreCase) {
 82     if (!RegExp.prototype.isPrototypeOf(reallyDo)) {
 83         return this.replace(new RegExp(reallyDo, (ignoreCase ? "gi" : "g")), replaceWith);
 84     } else {
 85         return this.replace(reallyDo, replaceWith);
 86     }
 87 };
 88 //格式化字符串
 89 String.Format = function() {
 90     if (arguments.length == 0) {
 91         return ‘‘;
 92     }
 93
 94     if (arguments.length == 1) {
 95         return arguments[0];
 96     }
 97
 98     var reg = /{(\d+)?}/g;
 99     var args = arguments;
100     var result = arguments[0].replace(reg, function($0, $1) {
101         return args[parseInt($1) + 1];
102     });
103     return result;
104 };
105
106 // 数字补零
107 Number.prototype.LenWithZero = function(oCount) {
108     var strText = this.toString();
109     while (strText.length < oCount) {
110         strText = ‘0‘ + strText;
111     }
112     return strText;
113 };
114
115 // Unicode还原
116 Number.prototype.ChrW = function() {
117     return String.fromCharCode(this);
118 };
119
120 // 数字数组由小到大排序
121 Array.prototype.Min2Max = function() {
122     var oValue;
123     for (var i = 0; i < this.length; i++) {
124         for (var j = 0; j <= i; j++) {
125             if (this[i] < this[j]) {
126                 oValue = this[i];
127                 this[i] = this[j];
128                 this[j] = oValue;
129             }
130         }
131     }
132     return this;
133 };
134
135 // 数字数组由大到小排序
136 Array.prototype.Max2Min = function() {
137     var oValue;
138     for (var i = 0; i < this.length; i++) {
139         for (var j = 0; j <= i; j++) {
140             if (this[i] > this[j]) {
141                 oValue = this[i];
142                 this[i] = this[j];
143                 this[j] = oValue;
144             }
145         }
146     }
147     return this;
148 };
149
150 // 获得数字数组中最大项
151 Array.prototype.GetMax = function() {
152     var oValue = 0;
153     for (var i = 0; i < this.length; i++) {
154         if (this[i] > oValue) {
155             oValue = this[i];
156         }
157     }
158     return oValue;
159 };
160
161 // 获得数字数组中最小项
162 Array.prototype.GetMin = function() {
163     var oValue = 0;
164     for (var i = 0; i < this.length; i++) {
165         if (this[i] < oValue) {
166             oValue = this[i];
167         }
168     }
169     return oValue;
170 };
171
172 // 获取当前时间的中文形式
173 Date.prototype.GetCNDate = function() {
174     var oDateText = ‘‘;
175     oDateText += this.getFullYear().LenWithZero(4) + new Number(24180).ChrW();
176     oDateText += this.getMonth().LenWithZero(2) + new Number(26376).ChrW();
177     oDateText += this.getDate().LenWithZero(2) + new Number(26085).ChrW();
178     oDateText += this.getHours().LenWithZero(2) + new Number(26102).ChrW();
179     oDateText += this.getMinutes().LenWithZero(2) + new Number(20998).ChrW();
180     oDateText += this.getSeconds().LenWithZero(2) + new Number(31186).ChrW();
181     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();
182     return oDateText;
183 };
184 //扩展Date格式化
185 Date.prototype.Format = function(format) {
186     var o = {
187         "M+": this.getMonth() + 1, //月份
188         "d+": this.getDate(), //日
189         "h+": this.getHours() % 12 == 0 ? 12 : this.getHours() % 12, //小时
190         "H+": this.getHours(), //小时
191         "m+": this.getMinutes(), //分
192         "s+": this.getSeconds(), //秒
193         "q+": Math.floor((this.getMonth() + 3) / 3), //季度
194         "S": this.getMilliseconds() //毫秒
195     };
196     var week = {
197         "0": "\u65e5",
198         "1": "\u4e00",
199         "2": "\u4e8c",
200         "3": "\u4e09",
201         "4": "\u56db",
202         "5": "\u4e94",
203         "6": "\u516d"
204     };
205     if (/(y+)/.test(format)) {
206         format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
207     }
208     if (/(E+)/.test(format)) {
209         format = format.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? "\u661f\u671f" : "\u5468") : "") + week[this.getDay() + ""]);
210     }
211     for (var k in o) {
212         if (new RegExp("(" + k + ")").test(format)) {
213             format = format.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
214         }
215     }
216     return format;
217 }
218 Date.prototype.Diff = function(interval, objDate) {
219     //若参数不足或 objDate 不是日期类型則回传 undefined
220     if (arguments.length < 2 || objDate.constructor != Date) { return undefined; }
221     switch (interval) {
222         //计算秒差
223         case ‘s‘: return parseInt((objDate - this) / 1000);
224             //计算分差
225         case ‘n‘: return parseInt((objDate - this) / 60000);
226             //计算時差
227         case ‘h‘: return parseInt((objDate - this) / 3600000);
228             //计算日差
229         case ‘d‘: return parseInt((objDate - this) / 86400000);
230             //计算周差
231         case ‘w‘: return parseInt((objDate - this) / (86400000 * 7));
232             //计算月差
233         case ‘m‘: return (objDate.getMonth() + 1) + ((objDate.getFullYear() - this.getFullYear()) * 12) - (this.getMonth() + 1);
234             //计算年差
235         case ‘y‘: return objDate.getFullYear() - this.getFullYear();
236             //输入有误
237         default: return undefined;
238     }
239 };
240
241 //检测是否为空
242 Object.prototype.IsNullOrEmpty = function() {
243     var obj = this;
244     var flag = false;
245     if (obj == null || obj == undefined || typeof (obj) == ‘undefined‘ || obj == ‘‘) {
246         flag = true;
247     } else if (typeof (obj) == ‘string‘) {
248         obj = obj.trim();
249         if (obj == ‘‘) {//为空
250             flag = true;
251         } else {//不为空
252             obj = obj.toUpperCase();
253             if (obj == ‘NULL‘ || obj == ‘UNDEFINED‘ || obj == ‘{}‘) {
254                 flag = true;
255             }
256         }
257     }
258     else {
259         flag = false;
260     }
261     return flag; 

//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);      }  };  //格式化字符串  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 不是日期类型則回传 undefined      if (arguments.length < 2 || objDate.constructor != Date) { return undefined; }      switch (interval) {          //计算秒差                                                                  case ‘s‘: return parseInt((objDate - this) / 1000);              //计算分差          case ‘n‘: return parseInt((objDate - this) / 60000);              //计算時差          case ‘h‘: return parseInt((objDate - this) / 3600000);              //计算日差          case ‘d‘: return parseInt((objDate - this) / 86400000);              //计算周差          case ‘w‘: return parseInt((objDate - this) / (86400000 * 7));              //计算月差          case ‘m‘: return (objDate.getMonth() + 1) + ((objDate.getFullYear() - this.getFullYear()) * 12) - (this.getMonth() + 1);              //计算年差          case ‘y‘: return objDate.getFullYear() - this.getFullYear();              //输入有误          default: return undefined;      }  };    //检测是否为空  Object.prototype.IsNullOrEmpty = function() {      var obj = this;      var flag = false;      if (obj == null || obj == undefined || typeof (obj) == ‘undefined‘ || obj == ‘‘) {          flag = true;      } else if (typeof (obj) == ‘string‘) {          obj = obj.trim();          if (obj == ‘‘) {//为空              flag = true;          } else {//不为空              obj = obj.toUpperCase();              if (obj == ‘NULL‘ || obj == ‘UNDEFINED‘ || obj == ‘{}‘) {                  flag = true;              }          }      }      else {          flag = false;      }      return flag;

时间: 2024-10-25 05:39:33

js一些方法的扩展的相关文章

node.js 和 node-webkit C++扩展方法

构建node扩展的方法: 1,安装node.js 版本为0.10.24.msi 2,安装node-gyp, npm install -g node-gyp 3,构建 hello工程 cd 到 node-gyp-hello\src node-gyp configure node-gyp build 构建node-webkit扩展的方法: 1,安装node.js 版本为0.10.24.msi 2,安装nw-gyp, npm install -g  nw-gyp 3,构建 hello工程 cd 到 n

学习zepto.js(原型方法)

学习zepto.js(原型方法)[1] 转载 新的一周,新的开始,今天来学习一下zepto里边的原型方法,就是通过$.进行调用的方法,也是可以通过$.fn进行扩展的方法: $.camelCase(): 方法接收一个字符串,将连字符格式的字符串转为驼峰格式的字符串: $.camelCase("login-name"); // ->loginName $.camelCase("loginName"); // ->不作处理 (本人发现zepto中的原型方法都是

盈创动力之 JS校验方法

var IS_NULL = 128; // 10000000var IS_FULL = 64; // 01000000var IS_HALF = 32; // 00100000var IS_ASCII = 16; // 00010000var IS_NUM = 8; // 00001000var IS_DATE = 4; // 00000100var IS_PHONE = 2; // 00000010var IS_EMAIL = 1; // 00000001var IS_NOT_NULL = 0

Js apply 方法 具体解释

Js apply方法具体解释 我在一開始看到javascript的函数apply和call时,很的模糊,看也看不懂,近期在网上看到一些文章对apply方法和call的一些演示样例,总算是看的有点眉目了,在这里我做例如以下笔记,希望和大家分享..  如有什么不正确的或者说法不明白的地方希望读者多多提一些意见,以便共同提高.. 主要我是要解决一下几个问题: 1.        apply和call的差别在哪里 2.        什么情况下用apply,什么情况下用call 3.        ap

来看看两种好玩的方法,扩展方法和分布方法

好久没过来扯淡了,话说这年头还有偶遇的事情吗?比如国庆回家的汽车上有个妹子要你qq,要你微信,想着法子跟你聊天,然后睡了一觉,醒来发现 肾不见了?小花絮小花絮,要是肾真没了,也吹不了牛,败不了火了,继续言归正传. 一:扩展方法 说到扩展方法,我想大家都已经再熟悉不过了,也许你的解决方案中有无数个这样的扩展方法,自从有了Linq之后,我们的集合就再也不单纯了. 从下面的Linq类中,所有的方法都扩展在IEnumerable<T>上,恰恰我们的集合都继承于IEnumerable接口下面. 然后我们

Sort方法的扩展

OC中类方法中只为我们提供了一些降序方法,现在我们自己定义方法,实现升序. 1.要求:定义一个Person类,实例变量包括name,age,height,定义几个对象,把这些对象保存在数组中,自己定义方法,实现数组按name,age,gheight的升序排列输出. 首先Person.h文件 #import <Foundation/Foundation.h> @interface Person : NSObject{ NSString *_name;//姓名 NSInteger _age;//年

调用JS的方法

触发javascript写的方法: 1.在button的click直接写JS语句调用 <button type="button" onclick="alert('Welcome!')">点击这里</button> 2.在button的click绑定js方法,点击时会调用 <script> function myFunction() { x=document.getElementById("demo"); //

JS replace()方法-字符串首字母大写

replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串. replace()方法有两个参数,第一个参数是正则表达式,正则表达式如果带全局标志/g,则是代表替换所有匹配的字符串,否则是只替换第一个匹配串.第二个参数可以是字符串,也可以是函数.$1.$2...表示与正则表达式匹配的文本. There are many ways we can make a difference. Global change starts with you. Sign up f

js通用方法检测浏览器是否已安装指定插件(IE与非IE通用)

/* * 检测是否已安装指定插件 * * pluginName 插件名称 */ function checkPlugins(pluginName) { var np = navigator.plugins; if (window.ActiveXObject) { // IE // ActiveXObject的对象名 var activexObjectName = pluginName + "." + pluginName; try { var axobj = eval("ne