一、取得函數名稱的3種實作方法
實例1:
在js權威指南中看到的一個方法:
Function.prototype.getName = function(){
return this.name || this.toString().match(/functions*([^(]*)(/)[1]
}
實例2:
如果目前函數是有名函數,則傳回其名字,如果是匿名函數則傳回被賦值的函數變數名,如果是閉包中匿名函數則傳回「anonymous」。
_callee = callee.toString().replace(/[s?]*/g,""),
comb = _callee.length >= 50 ? 50 :_callee.length; 0,comb);
var name = _callee.match(/^function([^(] ?)(/);
;
}
var caller = callee.caller,
_caller = caller.toString().replace(/[s?]*/iooo); (_callee),
str = _caller.substring(last-30,last);
name = str.match(/var([^= )=/);
; return name[1];
}
return "anonymous"
return "anonymous"
return "anonymous"
,傳入一個參數,為arguments.callee。 ee(){
//
var fnname =getFnName(arguments.callee)
// ();
複製程式碼
程式碼如下:
function getFuncName(_cala) var _scriptArr = document.scripts;
for (var i=0; i<_scriptarr.length i> { ].text.indexOf(_text);
if (_start != -1) { if (/^functions*(.*).*rn/.test(_text))
{
var _tempArr = _scriptArr[i].text.substr(0, _start).split('rn');
function a()
{
return getFuncName(arguments.callee);
}
^ b ()
{
return getFuncName(arguments.callee);
}
window.alert(a());
window.alert(b());
以上的方法還有一個情況沒辦法解決,希望有辦法的能給出指點。
複製碼
代碼如下:
var x = :
var x = :
{
return getFuncName(arguments.callee);
} 這個情況下無法得到函數的名稱;
二、js取得函數的所有參數和遍歷某個物件所有的屬性名稱和值的方法
複製程式碼
程式碼如下:
程式碼如下:
function test(){
for(var i=0;i
document.write(arguments[i]);
}
2.遍歷某個物件所有的屬性名稱和值的方法
複製程式碼
程式碼如下:
var obj = new Object();
obj.myname = "我是物件";
obj.pro2 = "23";
obj.pro3 = "abcdeg"; php程式設計師站
for (items in obj){
document.write("屬性:" items "的值是(" obj[items] ")");
document.write("
") ;
}