SORU
11 Aralık 2008, PERŞEMBE


Nasıl bir dize olarak adını aldığımda bir JavaScript fonksiyonu çalıştırmak için

Bir dize olarak JavaScript bir fonksiyonun adı var. Sonra da nasıl arayabilirim çok işlevi bir işaretçi haline dönüştürebilirim?

Koşullara bağlı olarak, bu yöntem çeşitli tartışmalar da geçmesi lazım.

Bazı işlevler namespace.namespace.function(args[...]) şeklinde olabilir.

CEVAP
11 Aralık 2008, PERŞEMBE


Tabii sen eval kullanmayınkesinlikle, olumlubaşka bir seçenek var.

Daha önce de belirttiğimiz gibi, bu gibi bir şey kullanarak bunu yapmak için en iyi yol olacaktır:

window["functionName"](arguments);

Bu, ancak, bir ad işlevi ... ile çalışmaz:

window["My.Namespace.functionName"](arguments); // fail

Bu nasıl davranacağınızı

window["My"]["Namespace"]["functionName"](arguments); // succeeds

Bunu kolaylaştırmak ve bazı esneklik sağlamak için, burada kolaylık işlevi:

function executeFunctionByName(functionName, context /*, args */) {
  var args = [].slice.call(arguments).splice(2);
  var namespaces = functionName.split(".");
  var func = namespaces.pop();
  for(var i = 0; i < namespaces.length; i  ) {
    context = context[namespaces[i]];
  }
  return context[func].apply(this, args);
}

Çok hoşuna çağrısı:

executeFunctionByName("My.Namespace.functionName", window, arguments);

Unutmayın, bu aynı yukarıdaki gibi yapın ki istediğiniz her şeyi iletebilirsiniz,:

executeFunctionByName("Namespace.functionName", My, arguments);

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Living Waters

    Living Water

    9 AĞUSTOS 2006
  • Santozz Yazz

    Santozz Yazz

    23 Mart 2014
  • Thom Hall

    Thom Hall

    24 Kasım 2006