15 NİSAN 2010, PERŞEMBE
Javascript Fonksiyon Adı mı?
Nasıl işlev içinde bir işlev adı erişebilir miyim?
// parasitic inheritance
var ns.parent.child = function() {
var parent = new ns.parent();
parent.newFunc = function() {
}
return parent;
}
var ns.parent = function() {
// at this point, i want to know who the child is that called the parent
// ie
}
var obj = new ns.parent.child();
CEVAP
30 Mart 2013, CUMARTESİ
ES5, yapılacak en iyi şey:
function functionName(fun) {
var ret = fun.toString();
ret = ret.substr('function '.length);
ret = ret.substr(0, ret.indexOf('('));
return ret;
}
Function.caller
kullanarak standart olmayan ve arguments.callee
katı modda yasaktır.
Edit: nus ... ... düzenli cevap aşağıda göre aynı şey, ama daha iyi performans var! elde
ES6, sadece myFunction.name
kullanabilirsiniz.
Not: bazı JS minifiers işlev adları, daha iyi sıkıştırmak için atmak olabilir; onların ayarları önlemek için çimdik gerekebilir Dikkat edin.
Bunu Paylaş:
Ağır basan bir JavaScript aslı başvuru...
Anonim fonksiyonları Javascript dosyal...
JavaScript fonksiyon bildirimi ve değe...
Nasıl javascript bir değişkeni fonksiy...
Nasıl Javascript bir fonksiyon tanımla...