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ş:
Nasıl JavaScript ile boş bir dize için...
Nasıl benim zorlamak için .NET Windows...
Nasıl bir işlev adı için Python ile bi...
Nasıl arka plan işlemi olarak çalıştır...
Nasıl bir dize JavaScript kullanarak b...