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 相关文章推荐
JQuery 学习笔记 选择器之三
Jul 23 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
Dec 18 Javascript
表单切换,用回车键替换Tab健(不支持IE)
Jul 20 Javascript
javascript编码的几个方法详细介绍
Jan 06 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
Nov 08 Javascript
Jquery Ajax方法传值到action的方法
May 11 Javascript
javascript实现tab切换的两个实例
Nov 05 Javascript
RequireJS使用注意细节
May 15 Javascript
简单实现bootstrap导航效果
Feb 07 Javascript
jQuery Jsonp跨域模拟搜索引擎
Jun 17 jQuery
实现两个文本框同时输入的实例
Sep 25 Javascript
js+css实现扇形导航效果
Aug 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 curl 伪造IP来源的实例代码
2012/11/01 PHP
php使用pdo连接报错Connection failed SQLSTATE的解决方法
2014/12/15 PHP
百度地图API使用方法详解
2015/08/25 PHP
jquery 简短几句代码实现给元素动态添加及获取提示信息
2011/09/01 Javascript
javascript 正则表达式相关应介绍
2012/11/27 Javascript
JavaScript中的函数重载深入理解
2014/08/04 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
简单学习JavaScript中的for语句循环结构
2015/11/10 Javascript
JS检测数组类型的方法小结
2017/03/14 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
jQuery事件模型默认行为执行顺序及trigger()与 triggerHandler()比较实例分析
2020/04/30 jQuery
JavaScript 实现轮播图特效的示例
2020/11/05 Javascript
[20:21]《一刀刀一天》第十六期:TI国际邀请赛正式打响,总奖金超过550万
2014/05/23 DOTA
python爬取亚马逊书籍信息代码分享
2017/12/09 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
django跳转页面传参的实现
2020/09/17 Python
Python常用外部指令执行代码实例
2020/11/05 Python
浅析Python 中的 WSGI 接口和 WSGI 服务的运行
2020/12/09 Python
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
办公室文秘自我评价
2013/09/21 职场文书
触摸春天教学反思
2014/02/03 职场文书
装修协议书范本
2014/04/21 职场文书
保护环境倡议书100字
2014/05/19 职场文书
找工作求职信
2014/07/07 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
小学二年级数学教学计划
2015/01/20 职场文书
惹女朋友生气检讨书
2015/05/06 职场文书
唐山大地震观后感
2015/06/05 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
2016年秋季开学典礼新闻稿
2015/11/25 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
《蚂蚁和蝈蝈》教学反思
2016/02/22 职场文书
MySQL慢查询的坑
2021/04/28 MySQL