数码资讯
Javascript获取函数名、函数参数和对象属性名的代码实例。
1。获取函数名称的3种方法 例1: 在JS权限指南中看到的一种方法: function.prototype.getname =函数(){ 返回this.name this.tostring(。比赛( /功能 *)| |({ ^(} *)( / { 1 }) } 例2: 如果当前函数是一个命名函数,则
选购提示
关注价格、性能、续航、售后和真实使用场景,理性比较后再下单。
1。获取函数名称的3种方法
例1:
在JS权限指南中看到的一种方法:
function.prototype.getname =函数(){
返回this.name this.tostring(。比赛( /功能 *)| |({ ^(} *)( / { 1 })
}
例2:
如果当前函数是一个命名函数,则返回它的名称。如果它是匿名函数,它返回分配给它的变量名。如果是闭包中的匿名函数,则返回匿名。
复制代码代码如下所示:
无功getfnname =函数(调用者){
无功_callee = callee.tostring()。更换( / { 的 } * / g,),
梳= _callee.length > = 5050:_callee.length;
_callee = _callee.substring(0,梳);
变量名= _callee.match( / ^功能({ ^ (} +)( /);
如果(name { 1 }){
返回名称{ 1 };
}
VaR来电= callee.caller,
_caller = caller.tostring()。更换( / { 的 } * / g,);
var最后= _caller.indexof(_callee),
STR = _caller.substring(last-30,最后);
名称= str.match( / var({ ^ = } +) = /);
如果(name { 1 }){
返回名称{ 1 };
}
返回匿名
};
用途:执行这个函数在函数内进行调查,并在参数传递,arguments.callee。
复制代码代码如下所示:
函数EE(){
/ / +++++++++++++++++++++++++++++++++
无功fnname = getfnname(参数。被叫方)
/ / +++++++++++++++++++++++++++++++++
警报(fnname)
};
(EE);
例3:
复制代码代码如下所示:
功能getfuncname(_callee)
{
无功_text = _callee.tostring();
无功_scriptarr = document.scripts;
对于(var i = 0;i < _scriptarr.length;i++)
{
无功_start = _scriptarr {我}。text.indexof(_text);
如果(_start!= 1)
{
如果(函数为( ))。 /测试(_text))。
{
无功_temparr = _scriptarr {我}。text.substr(0,_start)。Split( R');
返回(_temparr { 1 } _temparr.length。取代 /(瓦尔河)|( *)/ g,更换( / = /克),);
}
其他的
返回_text.match / ^功能 *({ ^ (} +)(* R){ 1 };
}
}
}
函数A()
{
返回getfuncname(参数。被叫方);
}
函数()
{
返回getfuncname(参数。被叫方);
}
Window.alert(A());
Window.alert(B());
上述方法仍有不可解决的情况。我希望有一种方法可以给你建议。
复制代码代码如下所示:
var x =
{
运行:函数()
{
返回getfuncname(参数。被叫方);
}
}
Window.alert(x.run());
在这种情况下,无法获得函数的名称。
第二,js获取函数的所有参数和遍历对象所有属性的名称和值的方法。
1。获取所有参数
复制代码代码如下所示:
函数测试(){
对于(var i = 0;i < arguments.length;i++)
document.write(参数{我});
}
2。遍历对象所有属性的名称和值的方法。
复制代码代码如下所示:
var obj =新的对象();
obj.myname =我的目标;
obj.pro2 =23;
obj.pro3 =abcdeg ;PHP程序员站
(项目为OBJ){
document.write(属性+项目+ (+ obj {项目} + ));
document.write();
}
例1:
在JS权限指南中看到的一种方法:
function.prototype.getname =函数(){
返回this.name this.tostring(。比赛( /功能 *)| |({ ^(} *)( / { 1 })
}
例2:
如果当前函数是一个命名函数,则返回它的名称。如果它是匿名函数,它返回分配给它的变量名。如果是闭包中的匿名函数,则返回匿名。
复制代码代码如下所示:
无功getfnname =函数(调用者){
无功_callee = callee.tostring()。更换( / { 的 } * / g,),
梳= _callee.length > = 5050:_callee.length;
_callee = _callee.substring(0,梳);
变量名= _callee.match( / ^功能({ ^ (} +)( /);
如果(name { 1 }){
返回名称{ 1 };
}
VaR来电= callee.caller,
_caller = caller.tostring()。更换( / { 的 } * / g,);
var最后= _caller.indexof(_callee),
STR = _caller.substring(last-30,最后);
名称= str.match( / var({ ^ = } +) = /);
如果(name { 1 }){
返回名称{ 1 };
}
返回匿名
};
用途:执行这个函数在函数内进行调查,并在参数传递,arguments.callee。
复制代码代码如下所示:
函数EE(){
/ / +++++++++++++++++++++++++++++++++
无功fnname = getfnname(参数。被叫方)
/ / +++++++++++++++++++++++++++++++++
警报(fnname)
};
(EE);
例3:
复制代码代码如下所示:
功能getfuncname(_callee)
{
无功_text = _callee.tostring();
无功_scriptarr = document.scripts;
对于(var i = 0;i < _scriptarr.length;i++)
{
无功_start = _scriptarr {我}。text.indexof(_text);
如果(_start!= 1)
{
如果(函数为( ))。 /测试(_text))。
{
无功_temparr = _scriptarr {我}。text.substr(0,_start)。Split( R');
返回(_temparr { 1 } _temparr.length。取代 /(瓦尔河)|( *)/ g,更换( / = /克),);
}
其他的
返回_text.match / ^功能 *({ ^ (} +)(* R){ 1 };
}
}
}
函数A()
{
返回getfuncname(参数。被叫方);
}
函数()
{
返回getfuncname(参数。被叫方);
}
Window.alert(A());
Window.alert(B());
上述方法仍有不可解决的情况。我希望有一种方法可以给你建议。
复制代码代码如下所示:
var x =
{
运行:函数()
{
返回getfuncname(参数。被叫方);
}
}
Window.alert(x.run());
在这种情况下,无法获得函数的名称。
第二,js获取函数的所有参数和遍历对象所有属性的名称和值的方法。
1。获取所有参数
复制代码代码如下所示:
函数测试(){
对于(var i = 0;i < arguments.length;i++)
document.write(参数{我});
}
2。遍历对象所有属性的名称和值的方法。
复制代码代码如下所示:
var obj =新的对象();
obj.myname =我的目标;
obj.pro2 =23;
obj.pro3 =abcdeg ;PHP程序员站
(项目为OBJ){
document.write(属性+项目+ (+ obj {项目} + ));
document.write();
}
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。