SORU
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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brendan van Son

    Brendan van

    5 Aralık 2006
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008
  • TSE

    TSE

    12 Kasım 2012