私がいる関数の名前をどのように知ることができますか?
以下のコードは「オブジェクト」に警告します。しかし、私は「アウター」に警告する方法を知る必要があります。
function Outer(){
alert(typeof this);
}
私はあなたがそれを行うことができると思います:
var name = arguments.callee.toString();
詳細については、 この記事 をご覧ください。
function callTaker(a,b,c,d,e){
// arguments properties
console.log(arguments);
console.log(arguments.length);
console.log(arguments.callee);
console.log(arguments[1]);
// Function properties
console.log(callTaker.length);
console.log(callTaker.caller);
console.log(arguments.callee.caller);
console.log(arguments.callee.caller.caller);
console.log(callTaker.name);
console.log(callTaker.constructor);
}
function callMaker(){
callTaker("foo","bar",this,document);
}
function init(){
callMaker();
}
これは機能します:
function test() {
var z = arguments.callee.name;
console.log(z);
}
ES6以降、次を使用できます Function.prototype.name
。これには、独自の引数オブジェクトがないため、矢印関数を操作するという追加の利点があります。
function logFuncName() {
console.log(logFuncName.name);
}
const logFuncName2 = () => {
console.log(logFuncName2.name);
};