javascript获取函数名称、函数参数、对象属性名称的代码实例

来源:互联网 发布:超市零售数据 编辑:程序博客网 时间:2024/06/05 20:28
一、获取函数名称的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, '');}elsereturn _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<arguments.length;i++)document.write(arguments[i]);}2.遍历某个对象所有的属性名称和值的方法代码如下:<script language="javascript">var obj = new object();obj.myname = "我是对象";obj.pro2 = "23";obj.pro3 = "abcdeg"; //php程序员站for (items in obj){document.write("属性:"+items+"的值是 ("+ obj[items] +")");document.write("<br>");}</script>


0 0