SORU
24 Mart 2009, Salı


Arama dinamik Javascript dinamik parametreleri ile fonksiyon

Bu konuda bir numara arıyorum. Javascript dinamik, keyfi bir fonksiyon, belirli parametreleri iletmek aramak için nasıl biliyorum, bu gibi bir şey:

function mainfunc (func, par1, par2){
    window[func](par1, par2);
}

function calledfunc(par1, par2){
    // Do stuff here
}

mainfunc('calledfunc','hello','bye');

İsteğe bağlı, sınırsız parametreleri kullanarak değişkenleri geçmek için nasıl biliyorum[] koleksiyon içindemainfuncama, parametreleri rasgele sayıda göndermek için nasıl olduğunu bilmiyorummainfuncgönderilecekcalledfuncdinamik olarak; nasıl böyle bir şey başarmak, ancak isteğe bağlı bağımsız değişken herhangi bir sayı (bu çok çirkin . kullanarak değil ^em>if-else)? :

function mainfunc (func){
    if(arguments.length == 3)
        window[func](arguments[1], arguments[2]);
    elseif(arguments.length == 4)
        window[func](arguments[1], arguments[2], arguments[3]);
    elseif(arguments.length == 5)
        window[func](arguments[1], arguments[2], arguments[3], arguments[4]);
}

function calledfunc1(par1, par2){
    // Do stuff here
}

function calledfunc2(par1, par2, par3){
    // Do stuff here
}

mainfunc('calledfunc1','hello','bye');
mainfunc('calledfunc2','hello','bye','goodbye');

Ben kötü İngilizcem için özür dilerim, lütfen biraz açıklama ihtiyacı varsa bana sor (karışık) benim sorum.

Şimdiden teşekkürler!

CEVAP
24 Mart 2009, Salı


Bu fonksiyon yöntemi kullanın:-

function mainfunc (func){
    window[func].apply(null, Array.prototype.slice.call(arguments, 1));
}

EditBu çok daha hafif bir oynamayla faydalı olur bu olur:-

function mainfunc (func){
    this[func].apply(this, Array.prototype.slice.call(arguments, 1));
}

Bu Tarayıcı (Genel alanıthis varsayılan) dışında çalışacak. Mainfunc ara da işe yarar:-

function target(a)
{
	alert(a)
}

var o = {suffix: " World",
		target : function(s) {
		alert(s   this.suffix);
	}
}

mainfunc("target", "Hello");

mainfunc.call(o, "target", "Hello");

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • kidrauhl

    kidrauhl

    15 Ocak 2007
  • Rootjunky.com

    Rootjunky.co

    22 EKİM 2011