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 相关文章推荐
js同时按下两个方向键
Dec 01 Javascript
JavaScript 继承详解 第一篇
Aug 30 Javascript
浅析Js中的单引号与双引号问题
Nov 06 Javascript
优化Jquery,提升网页加载速度
Nov 14 Javascript
javascript 数组操作详解
Jan 29 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
Jquery时间轴特效(三种不同类型)
Nov 02 Javascript
基于Angularjs实现分页功能
May 30 Javascript
Jil,高效的json序列化和反序列化库
Feb 15 Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 jQuery
JS中常用的消息框总结
Feb 24 Javascript
js数组的基本使用总结
Jan 18 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处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
js展开闭合效果演示代码
2013/07/24 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
谈谈Jquery ajax中success和complete有哪些不同点
2015/11/20 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
利用jquery获取select下拉框的值
2016/11/23 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
原生js实现电商侧边导航效果
2017/01/19 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
python计算最大优先级队列实例
2013/12/18 Python
Python的Flask框架中@app.route的用法教程
2015/03/31 Python
python实现查找两个字符串中相同字符并输出的方法
2015/07/11 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
Python生成数字图片代码分享
2017/10/31 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
pandas全表查询定位某个值所在行列的方法
2018/04/12 Python
Python玩转PDF的各种骚操作
2019/05/06 Python
详解python深浅拷贝区别
2019/06/24 Python
Python交互式图形编程的实现
2019/07/25 Python
python实现各种插值法(数值分析)
2019/07/30 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
2019/12/10 Python
Python中os模块功能与用法详解
2020/02/26 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
python中remove函数的踩坑记录
2021/01/04 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
美国马匹用品和马钉购物网站:State Line Tack
2018/08/05 全球购物
《小松树和大松树》教学反思
2014/02/20 职场文书
关于安全的标语
2014/06/10 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书