首页 > 代码库 > JavaScript实用技巧总结

JavaScript实用技巧总结

前言

     总结一下最近接触到的JavaScript语法糖,与大家共享。

     每块糖都有详细的说明和示例,就不多说了。

准确的类型检查

 1 /* 2 * @function: 3 *   类型检查示例 4 *   通过此方法,可以检查某个变量是否为期望的数据类型 5 * @params: 6 *   obj 需要检查的变量,必选 7 *   config 数据类型白名单,可选,默认为全部类型 8 * @return: 9 *   true 表示检查通过,false 未通过10 * @examples:11 *   typeCheck("str"); //return true12 *   typeCheck({},{"[object Array]": 1}); //return false13 */14 function typeCheck(obj,config){15   var hasOp = Object.prototype.hasOwnProperty,16       toStr = Object.prototype.toString,17       _config = config || {18         "[object Object]": 1,19         "[object Array]": 1,20         "[object Regex]": 1,21         "[object String]": 1,22         "[object Number]": 1,23         "[object Boolean]": 1,24         "[object Function]": 1,25         "[object Undefined]": 1,26         "[object Null]": 127       };28   29   return hasOp.call(_config,toStr.call(obj));30 }
View Code

 优雅的添加原型方法

 1 /* 2 * @description: 3 *   优雅的添加原型方法 4 *   在公共作用域执行此代码片段即可 5 */ 6 if(typeof Function.prototype.method !== "function") { 7   Function.prototype.method = function(name,fn){ 8     this.prototype[name] = fn; 9     return this;10   };11 }12 13 /*14 * 使用示例15 */16 //定义一个“测试类”17 function testFn(){18   19 }20 21 //添加测试类的成员方法22 testFn.method("add",function(a,b){23   return a + b;24 }).method("sub",function(a,b){25   return a - b;26 });27 28 //实例化29 var testObj = new testFn();30 31 //调用成员方法32 testObj.add(1,5);  //return 633 testObj.sub(7,2);  //return 5
View Code

 快捷创建命名空间

 1 /* 2 * @function: 3 *   创建命名空间 4 * @params: 5 *   ex 命名空间表达式,例如:NSROOT.service.impl 6 *   此表达式必须从根节点开始写起 7 * @return: 8 *   返回Object,此Object是表达式的最后一个节点 9 * @others:10 *   如果您不喜欢NSROOT这个命名,简单的查找替换即可11 */12 var NSROOT = NSROOT || {};13 14 NSROOT.namespace = function(ex){15   var _ex = ex || "",16       nsArray = _ex.split("."),17       parentNode = NSROOT,18       _s = "",19       i = 0;20   21   //判断命名空间是否从根节点开始22   if(nsArray[0] !== "NSROOT"){23     throw("命名空间必须从根节点开始!");24   }25   26   //去掉root节点27   nsArray = nsArray.slice(1);28   29   for(i = 0;i<nsArray.length;i++){30     _s = nsArray[i];31     if(parentNode[_s] === undefined){32       parentNode[_s] = {};33     }34     parentNode = parentNode[_s];35   }36   37   return parentNode;38 };39 40 /*41 * 使用示例42 */43 //创建新的命名空间44 var impl = NSROOT.namespace("NSROOT.service.impl");45 alert(impl === NSROOT.service.impl);  //return true46 47 //创建已有的命名空间,不覆盖原来的数据48 NSROOT.namespace("NSROOT.service.impl");49 alert(impl === NSROOT.service.impl);  //return true
View Code

 

JavaScript实用技巧总结