ホームページ >ウェブフロントエンド >jsチュートリアル >関数名、関数パラメータ、オブジェクト属性名を取得するJavaScriptのコード例_基礎知識

関数名、関数パラメータ、オブジェクト属性名を取得するJavaScriptのコード例_基礎知識

WBOY
WBOYオリジナル
2016-05-16 16:52:22973ブラウズ

1. 関数名を取得する 3 つの実装方法

例 1:

js の権威あるガイドに記載されているメソッド:

Function.prototype.getName = function(){
return this.name || this.toString().match(/functions*([^(]*)(/)[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]; 関数、arguments.callee を 1 つのパラメータに渡します。function ee(){
//
var fnname =getFnName(arguments) .callee)
//
alert(fnname)
};
ee();


コードをコピー


コードは次のとおりです。


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)

return _text.match(/^functions*([^(] ). *rn/ )[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());関数を取得できません。





コードをコピーします


コードは次のとおりです:

関数テスト(){
for(var i=0;i document.write(arguments[i]); }

2. オブジェクトのすべての属性名と値を走査するメソッド

コードをコピーコードは次のとおりです:



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。