zl程序教程

您现在的位置是:首页 >  前端

当前栏目

JavaScript常用小技巧小结

JavaScript 技巧 常用 小结
2023-06-13 09:15:38 时间

前言

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

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

准确的类型检查

复制代码代码如下:


 /*
 *@function:
 *  类型检查示例
 *  通过此方法,可以检查某个变量是否为期望的数据类型
 *@params:
 *  obj需要检查的变量,必选
 *  config数据类型白名单,可选,默认为全部类型
 *@return:
 *  true表示检查通过,false未通过
 *@examples:
 *  typeCheck("str");//returntrue
 *  typeCheck({},{"[objectArray]":1});//returnfalse
 */
 functiontypeCheck(obj,config){
  varhasOp=Object.prototype.hasOwnProperty,
      toStr=Object.prototype.toString,
      _config=config||{
        "[objectObject]":1,
        "[objectArray]":1,
        "[objectRegex]":1,
        "[objectString]":1,
        "[objectNumber]":1,
        "[objectBoolean]":1,
        "[objectFunction]":1,
        "[objectUndefined]":1,
        "[objectNull]":1
      };
  
  returnhasOp.call(_config,toStr.call(obj));
 }

 优雅的添加原型方法

复制代码代码如下:


 /*
 *@description:
 *  优雅的添加原型方法
 *  在公共作用域执行此代码片段即可
 */
 if(typeofFunction.prototype.method!=="function"){
  Function.prototype.method=function(name,fn){
    this.prototype[name]=fn;
    returnthis;
  };
 }
 /*
 *使用示例
 */
 //定义一个“测试类”
 functiontestFn(){
 }
 //添加测试类的成员方法
 testFn.method("add",function(a,b){
  returna+b;
 }).method("sub",function(a,b){
  returna-b;
 });
 //实例化
 vartestObj=newtestFn();
 //调用成员方法
 testObj.add(1,5); //return6
 testObj.sub(7,2); //return5

 快捷创建命名空间

复制代码代码如下:
 /*
 *@function:
 *  创建命名空间
 *@params:
 *  ex命名空间表达式,例如:NSROOT.service.impl
 *  此表达式必须从根节点开始写起
 *@return:
 *  返回Object,此Object是表达式的最后一个节点
 *@others:
 *  如果您不喜欢NSROOT这个命名,简单的查找替换即可
 */
 varNSROOT=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];
  }
  returnparentNode;
 };
 /*
 *使用示例
 */
 //创建新的命名空间
 varimpl=NSROOT.namespace("NSROOT.service.impl");
 alert(impl===NSROOT.service.impl); //returntrue
 //创建已有的命名空间,不覆盖原来的数据
 NSROOT.namespace("NSROOT.service.impl");
 alert(impl===NSROOT.service.impl); //returntrue