一、获取函数名称的3种实现方法
实例1:
在js权威指南中看到的一个方法:
1 2 3 | Function.prototype.getName = function (){ return this .name || this .toString().match(/ function \s*([^(]*)\(/)[1] } |
实例2:
如果当前函数是有名函数,则返回其名字,如果是匿名函数则返回被赋值的函数变量名,如果是闭包中匿名函数则返回“anonymous”。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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。
1 2 3 4 5 6 7 | function ee(){ //+++++++++++++++++++++++++++++++++ var fnname =getFnName(arguments.callee) //+++++++++++++++++++++++++++++++++ alert(fnname) }; ee(); |
实例3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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()); |
二、js获取函数的所有参数和遍历某个对象所有的属性名称和值的方法
1.获取所有参数
1 2 3 | function test(){ for ( var i=0;i<arguments.length;i++) document.write(arguments[i]); } |
2.遍历某个对象所有的属性名称和值的方法
1 2 3 4 5 6 7 8 9 10 | <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> |
以上就是javascript如何获取函数名称和参数方法实例详解的详细内容,更多请关注php中文网其它相关文章!
转载于:http://www.php/js-tutorial-375024.html
发布评论