欢迎来到代码驿站!

JavaScript代码

当前位置:首页 > 网页前端 > JavaScript代码

Js 获取当前函数参数对象的实现代码

时间:2021-04-06 10:03:07|栏目:JavaScript代码|点击:

有时候在封装控件的时候在很多 Js 函数中需要获取传入的直接参数或者对象参数,那么我们就需要每次都去判断第一个对象,所以为了方便在此封装一个函数,来获取当前函数中的参数值:

/*------------------------------------------
 * 清除字符串两端空格,包含换行符、制表符
 *------------------------------------------*/
String.prototype.Trim = function () { return this.replace(/(^[\s\n\t]+|[\s\n\t]+$)/g, ""); }

/*----------------------------------------
 * 获取当前函数的参数对象
 *----------------------------------------
 * diffCase 是否区分大小写,默认 false
 *----------------------------------------*/
function GetArgs(diffCase) {

 //返回参数对象
 var result = new Object();

 //获取调用函数
 var caller = arguments.callee.caller;
 if (caller == null || caller.arguments.length == 0) return result;

 //获取函数的参数集合
 var matchs = caller.toString().match(/\s*function[\w\s]*\(([\w\s,]*)\)/);
 if (matchs == null) return result;
 var argArray = matchs[1].split(",");

 //获取参数对象
 var params = caller.arguments[0];
 var index = typeof (params) == "object" ? 1 : 0;
 if (index == 1) {
  for (var p in params) {
   for (var i = 0; i < argArray.length; i++) {
    var arg = argArray[i].Trim();
    if (diffCase) {
     if (arg == p) {
      result[arg] = params[p];
      break;
     }
    } else {
     if (arg.toLocaleLowerCase() == p.toLocaleLowerCase()) {
      result[arg] = params[p];
      break;
     }
    }
   }
  }
 }
   
 //多个参数将第一个后面的参数覆盖对象传入的参数
 for (var i = index; i < argArray.length && i < caller.arguments.length; i++)
  result[argArray[i].Trim()] = caller.arguments[i];

 return result;
}

调用示例:

//测试函数
function Test(name, age) {

 //获取参数对象
 var args = GetArgs();

 alert("姓名:" + args.name + ",年龄:" + args.age);

}

//调用测试
Test("张三", 25);
Test({ name: "李四", age: 30 });
Test({ name: "王五" }, 18);

上一篇:探讨JavaScript中的Rest参数和参数默认值

栏    目:JavaScript代码

下一篇:webpack分离css单独打包的方法

本文标题:Js 获取当前函数参数对象的实现代码

本文地址:http://www.codeinn.net/misctech/95831.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有