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 相关文章推荐
checkbox 多选框 联动实现代码
Oct 22 Javascript
Javascript结合css实现网页换肤功能
Nov 02 Javascript
javascript 面向对象 function类
May 13 Javascript
jQuery实现长文字部分显示代码
May 13 Javascript
javascript实用小函数使用介绍
Nov 11 Javascript
JS自定义对象实现Java中Map对象功能的方法
Jan 20 Javascript
javaScript中slice函数用法实例分析
Jun 08 Javascript
js父页面中使用子页面的方法
Jan 09 Javascript
JavaScript实现弹出DIV层同时页面背景渐变成半透明效果
Mar 25 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
JS实现微信里判断页面是否被分享成功的方法
Jun 06 Javascript
动态内存分配导致影响Javascript性能的问题
Dec 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
手把手教你使用DedeCms的采集的图文教程
2007/03/11 PHP
php excel reader读取excel内容存入数据库实现代码
2012/12/06 PHP
基于empty函数的输出详解
2013/06/17 PHP
php文件操作之小型留言本实例
2015/06/20 PHP
php统计数组元素个数的方法
2015/07/02 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
javascript 事件查询综合 推荐收藏
2010/03/10 Javascript
JS中获取数据库中的值的方法
2013/07/14 Javascript
javascript的push使用指南
2014/12/05 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
JavaScript中的Number数字类型学习笔记
2016/05/26 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
jQuery获取table下某一行某一列的值实现代码
2017/04/07 jQuery
nodejs个人博客开发第五步 分配数据
2017/04/12 NodeJs
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
2017/05/15 jQuery
vue-router实现tab标签页(单页面)详解
2017/10/17 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
微信小程序canvas拖拽、截图组件功能
2018/09/04 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
全面解析JavaScript Module模式
2020/07/24 Javascript
Python 逐行分割大txt文件的方法
2017/10/10 Python
Python测试人员需要掌握的知识
2018/02/08 Python
Python反射的用法实例分析
2018/02/11 Python
Python paramiko模块的使用示例
2018/04/11 Python
python3去掉string中的标点符号方法
2019/01/22 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
用 Django 开发一个 Python Web API的方法步骤
2020/12/03 Python
乌克兰鞋类购物网站:Eobuv.com.ua
2020/11/28 全球购物
双立人美国官方商店:ZWILLING集团餐具和炊具
2020/05/07 全球购物
2014学校领导四风对照检查材料思想汇报
2014/09/23 职场文书
2015年读书月活动总结
2015/03/26 职场文书
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android