javascript获取函数名称、函数参数、对象属性名称的代码实例

  一、获取函数名称的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>