用JS獲取函數相關的代碼

本文主要介紹了Javascript獲取函數名稱、函數參數以及對象屬性的代碼,其中包括了獲取函數名稱的3種實現方法和用JS獲取函數的所有參數並且遍歷某個對象所有屬性的名稱和值的方法。

 

獲取函數名稱的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());

 

js獲取函數的所有參數和遍歷某個對象所有的屬性名稱和值的方法:

 

1.獲取所有參數,代碼如下:

function test(){

for(var i=0;i<arguments.length;i++)

 document.write(arguments[i]);

}

 

2.遍歷某個對象所有的屬性名稱和值的方法,代碼如下:

<scriptlanguage="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>

 

本文爲Anyforweb技術分享博客,需要了解網站建設及更多web應用相關信息,請訪問anyforweb.com。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章