前言
总结一下最近接触到的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 5View 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 trueView Code
新闻热点
疑难解答