您好,欢迎访问一九零五行业门户网

JavaScript常用小技巧小结_javascript技巧

前言
     总结一下最近接触到的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     _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
其它类似信息

推荐信息