麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript獲取函數名稱、函數參數、對象屬性名稱的代碼實例

2019-11-20 20:50:02
字體:
來源:轉載
供稿:網友

一、獲取函數名稱的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>


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91成人影库 | 麻豆国产网站 | 久久免费视频3 | 欧美国产一级片 | 成人短视频在线观看 | 色婷婷久久久 | 毛片视频在线免费观看 | 天堂成人国产精品一区 | 久久免费视频5 | 中文字幕偷拍 | 夜夜夜操操操 | 宅男噜噜噜66国产免费观看 | 久久无 | 黄色免费av网站 | 国产免费让你躁在线视频 | 高颜值美女啪啪 | 欧美亚成人 | 特大黑人videos与另类娇小 | 久久久噜噜噜久久熟有声小说 | 韩国精品视频在线观看 | 伦理三区| 性欧美日本 | 黄色99视频 | 久久99国产综合精品 | 毛片在线视频观看 | 特级黄一级播放 | 欧美一级做一级爱a做片性 久久久资源网 | 黄色av电影在线播放 | v11av在线播放 | 中文日韩字幕 | av影院在线播放 | 久久国产精 | 91九色网| 亚洲国产一区二区三区 | 日韩字幕在线观看 | 特大黑人videos与另类娇小 | av视屏| 久久第四色 | 欧美一级做一级爱a做片性 91在线视频观看 | 777zyz色资源站在线观看 | 黄色特级毛片 |