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


Posted in Javascript onApril 12, 2014

一、获取函数名称的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<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>

Javascript 相关文章推荐
ExtJS 设置级联菜单的默认值
Jun 13 Javascript
用方法封装javascript的new操作符(一)
Dec 25 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
Mar 04 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
Apr 05 Javascript
JS实现的简单轮播图运动效果示例
Dec 22 Javascript
微信小程序之拖拽排序(代码分享)
Jan 21 Javascript
JavaScript实现各种排序的代码详解
Aug 28 Javascript
jQuery实现菜单的显示和隐藏功能示例
Jul 24 jQuery
在vue中实现点击选择框阻止弹出层消失的方法
Sep 15 Javascript
使用vue for时为什么要key【推荐】
Jul 11 Javascript
Paypal支付不完全指北
Jun 04 Javascript
JavaScript setTimeout()基本用法有哪些
Nov 04 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
Apr 12 #Javascript
JS获取URL中参数值(QueryString)的4种方法分享
Apr 12 #Javascript
javascript对JSON数据排序的3个例子
Apr 12 #Javascript
Js保留小数点的4种效果实现代码分享
Apr 12 #Javascript
JS判断客户端是手机还是PC的2个代码
Apr 12 #Javascript
javascript window.open打开新窗口后无法再次打开该窗口问题的解决方法
Apr 12 #Javascript
jQuery中阻止冒泡事件的方法介绍
Apr 12 #Javascript
You might like
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
php的ajax简单实例
2014/02/27 PHP
php下foreach提示Warning:Invalid argument supplied for foreach()的解决方法
2014/11/11 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
深入理解Javascript里的依赖注入
2014/03/19 Javascript
深入分析下javascript中的[]()+!
2015/07/07 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
使用jquery.form.js实现图片上传的方法
2016/05/05 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
如何通过非数字与字符的方式实现PHP WebShell详解
2017/07/02 Javascript
vue使用Font Awesome的方法步骤
2019/02/26 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
详解Vue的异步更新实现原理
2020/12/22 Vue.js
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
Python实现对百度云的文件上传(实例讲解)
2017/10/21 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
5分钟实现Canvas鼠标跟随动画背景
2019/11/18 HTML / CSS
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
MySQL面试题
2014/01/12 面试题
厂长助理岗位职责
2013/12/27 职场文书
师德师风个人反思
2014/04/28 职场文书
安全责任书
2015/01/29 职场文书
法人身份证明书
2015/06/18 职场文书
汤姆索亚历险记读书笔记
2015/06/29 职场文书
2016年圣诞节义工活动总结
2016/04/01 职场文书
nginx对http请求处理的各个阶段详析
2021/03/31 Servers
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android
Python实现学生管理系统(面向对象版)
2021/06/24 Python