视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
javascript获取函数名称、函数参数、对象属性名称的代码实例_基础知识
2020-11-27 21:21:57 责编:小采
文档


一、获取函数名称的3种实现方法

实例1:

在js权威指南中看到的一个方法:

Function.prototype.getName = function(){
return this.name || this.toString().match(/function\s*([^(]*)\(/)[1]
}

实例2:

如果当前函数是有名函数,则返回其名字,如果是匿名函数则返回被赋值的函数变量名,如果是闭包中匿名函数则返回“anonymous”。
代码如下:
var getFnName = function(callee){
var _callee = callee.toString().replace(/[\s\?]*/g,""),
comb = _callee.length >= 50 ? 50 :_callee.length;
_callee = _callee.substring(0,comb);
var name = _callee.match(/^function([^\(]+?)\(/);
if(name && name[1]){
return name[1];
}
var caller = callee.caller,
_caller = caller.toString().replace(/[\s\?]*/g,"");
var last = _caller.indexOf(_callee),
str = _caller.substring(last-30,last);
name = str.match(/var([^\=]+?)\=/);
if(name && name[1]){
return name[1];
}
return "anonymous"
};

使用:在要调查的函数内部执行此函数,传入一个参数,为arguments.callee。
代码如下:
function ee(){
//+++++++++++++++++++++++++++++++++
var fnname =getFnName(arguments.callee)
//+++++++++++++++++++++++++++++++++
alert(fnname)
};
ee();

实例3:

代码如下:
function getFuncName(_callee)
{
var _text = _callee.toString();
var _scriptArr = document.scripts;
for (var i=0; i<_scriptArr.length; i++)
{
var _start = _scriptArr[i].text.indexOf(_text);
if (_start != -1)
{
if (/^function\s*\(.*\).*\r\n/.test(_text))
{
var _tempArr = _scriptArr[i].text.substr(0, _start).split('\r\n');
return _tempArr[_tempArr.length - 1].replace(/(var)|(\s*)/g, '').replace(/=/g, '');
}
else
return _text.match(/^function\s*([^\(]+).*\r\n/)[1];
}
}
}
function a()
{
return getFuncName(arguments.callee);
}
var b = function()
{
return getFuncName(arguments.callee);
}
window.alert(a());
window.alert(b());

以上的方法还有一个情况没法解决,希望有办法的能给出指点。
代码如下:
var x =
{
run : function()
{
return getFuncName(arguments.callee);
}
}
window.alert(x.run());

这个情况下无法得到函数的名称;

二、js获取函数的所有参数和遍历某个对象所有的属性名称和值的方法

1.获取所有参数
代码如下:
function test(){

for(var i=0;i document.write(arguments[i]);

}

2.遍历某个对象所有的属性名称和值的方法
代码如下:

var obj = new Object();
obj.myname = "我是对象";
obj.pro2 = "23";
obj.pro3 = "abcdeg"; php程序员站

for (items in obj){
document.write("属性:"+items+"的值是 ("+ obj[items] +")");
document.write("
");
}

下载本文
显示全文
专题