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 函数集合
Jun 11 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
解决node.js安装包失败的几种方法
Sep 02 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
Feb 20 Javascript
JavaScript实现移动端页面按手机屏幕分辨率自动缩放的最强代码
Aug 18 Javascript
vue 简单自动补全的输入框的示例
Mar 12 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
May 18 Javascript
Vue项目引进ElementUI组件的方法
Nov 11 Javascript
Element Notification通知的实现示例
Jul 27 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
Vue用mixin合并重复代码的实现
Nov 27 Vue.js
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/06/09 PHP
解析PHPExcel使用的常用说明以及把PHPExcel整合进CI框架的介绍
2013/06/24 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
教您去掉ie网页加载进度条的方法
2010/12/09 Javascript
Jquery 插件开发笔记整理
2011/01/17 Javascript
JQury slideToggle闪烁问题及解决办法
2011/07/05 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之二
2011/12/31 Javascript
一个简单的瀑布流效果(主体形式自写)
2013/05/27 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
2014/06/05 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
微信小程序 122100版本更新问题解决方案
2016/12/22 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
jQuery分组选择器简单用法示例
2019/04/04 jQuery
重学JS之显示强制类型转换详解
2019/06/30 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
VueQuillEditor富文本上传图片(非base64)
2020/06/03 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
django之常用命令详解
2016/06/30 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
2017/02/13 Python
django 创建过滤器的实例详解
2017/08/14 Python
Django缓存系统实现过程解析
2019/08/02 Python
python定义具名元组实例操作
2021/02/28 Python
纯css3实现走马灯效果
2014/12/26 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
2015年个人剖析材料范文
2014/12/29 职场文书
党内外群众意见范文
2015/06/02 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
python爬虫之爬取笔趣阁小说
2021/04/22 Python
OpenCV实现常见的四种图像几何变换
2022/04/01 Python