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 相关文章推荐
javascript 面向对象编程基础:继承
Aug 21 Javascript
Javascript 修改String 对象 增加去除空格功能(示例代码)
Nov 30 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
jquery实现全选、反选、获得所有选中的checkbox
Sep 13 Javascript
js console.log打印对像与数组用法详解
Jan 21 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
Feb 14 Javascript
Angular使用Restful的增删改
Dec 28 Javascript
微信小程序实现复选框效果
Dec 28 Javascript
深入理解JS异步编程-Promise
Jun 03 Javascript
JavaScript实现放大镜效果代码示例
Apr 29 Javascript
如何手写一个简易的 Vuex
Oct 10 Javascript
js实现随机点名功能
Dec 23 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
PHP个人网站架设连环讲(二)
2006/10/09 PHP
php基础知识:类与对象(1)
2006/12/13 PHP
提高PHP编程效率 引入缓存机制提升性能
2010/02/15 PHP
php把session写入数据库示例
2014/02/26 PHP
php 魔术方法详解
2014/11/11 PHP
php $_SESSION会员登录实例分享
2021/01/19 PHP
yii2使用ajax返回json的实现方法
2016/05/14 PHP
详解php框架Yaf路由重写
2017/06/20 PHP
PHP静态延迟绑定和普通静态效率的对比
2017/10/20 PHP
PHP的mysqli_select_db()函数讲解
2019/01/23 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
2019/06/05 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JS跨域代码片段
2012/08/30 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
easy ui datagrid 从编辑框中获取值的方法
2017/02/22 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
2017/03/29 Javascript
手把手带你封装一个vue component第三方库
2019/02/14 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
详解如何在Vue项目中发送jsonp请求
2019/10/25 Javascript
用Python的urllib库提交WEB表单
2009/02/24 Python
Python 忽略warning的输出方法
2018/10/18 Python
PyCharm在新窗口打开项目的方法
2019/01/17 Python
Python搭建代理IP池实现接口设置与整体调度
2019/10/27 Python
Django ValuesQuerySet转json方式
2020/03/16 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
Python tkinter实现简单加法计算器代码实例
2020/05/13 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
英国最全面的橄榄球联盟门票网站:Live Rugby Tickets
2018/10/06 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
企业晚会策划方案
2014/05/29 职场文书
2015年班组工作总结
2015/04/20 职场文书
Python编写nmap扫描工具
2021/07/21 Python