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

  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008
  • Thom Hall

    Thom Hall

    24 Kasım 2006
  • Toddler Fun Learning

    Toddler Fun

    8 ŞUBAT 2013