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

前端之家收集整理的这篇文章主要介绍了Js 获取当前函数参数对象的实现代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

/*----------------------------------------

  • 获取当前函数的参数对象
    *----------------------------------------
  • 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(/\sfunction[\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);

原文链接:https://www.f2er.com/js/47717.html

猜你在找的JavaScript相关文章