Posted in Javascript onDecember 29, 2014
前言
总结一下最近接触到的JavaScript语法糖,与大家共享。
每块糖都有详细的说明和示例,就不多说了。
准确的类型检查
/* * @function: * 类型检查示例 * 通过此方法,可以检查某个变量是否为期望的数据类型 * @params: * obj 需要检查的变量,必选 * config 数据类型白名单,可选,默认为全部类型 * @return: * true 表示检查通过,false 未通过 * @examples: * typeCheck("str"); //return true * typeCheck({},{"[object Array]": 1}); //return false */ function typeCheck(obj,config){ var hasOp = Object.prototype.hasOwnProperty, toStr = Object.prototype.toString, _config = config || { "[object Object]": 1, "[object Array]": 1, "[object Regex]": 1, "[object String]": 1, "[object Number]": 1, "[object Boolean]": 1, "[object Function]": 1, "[object Undefined]": 1, "[object Null]": 1 }; return hasOp.call(_config,toStr.call(obj)); }
优雅的添加原型方法
/* * @description: * 优雅的添加原型方法 * 在公共作用域执行此代码片段即可 */ if(typeof Function.prototype.method !== "function") { Function.prototype.method = function(name,fn){ this.prototype[name] = fn; return this; }; } /* * 使用示例 */ //定义一个“测试类” function testFn(){ } //添加测试类的成员方法 testFn.method("add",function(a,b){ return a + b; }).method("sub",function(a,b){ return a - b; }); //实例化 var testObj = new testFn(); //调用成员方法 testObj.add(1,5); //return 6 testObj.sub(7,2); //return 5
快捷创建命名空间
/* * @function: * 创建命名空间 * @params: * ex 命名空间表达式,例如:NSROOT.service.impl * 此表达式必须从根节点开始写起 * @return: * 返回Object,此Object是表达式的最后一个节点 * @others: * 如果您不喜欢NSROOT这个命名,简单的查找替换即可 */ var NSROOT = NSROOT || {}; NSROOT.namespace = function(ex){ var _ex = ex || "", nsArray = _ex.split("."), parentNode = NSROOT, _s = "", i = 0; //判断命名空间是否从根节点开始 if(nsArray[0] !== "NSROOT"){ throw("命名空间必须从根节点开始!"); } //去掉root节点 nsArray = nsArray.slice(1); for(i = 0;i<nsArray.length;i++){ _s = nsArray[i]; if(parentNode[_s] === undefined){ parentNode[_s] = {}; } parentNode = parentNode[_s]; } return parentNode; }; /* * 使用示例 */ //创建新的命名空间 var impl = NSROOT.namespace("NSROOT.service.impl"); alert(impl === NSROOT.service.impl); //return true //创建已有的命名空间,不覆盖原来的数据 NSROOT.namespace("NSROOT.service.impl"); alert(impl === NSROOT.service.impl); //return true
JavaScript常用小技巧小结
- Author -
hebedich声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@