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

  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • Kat Krazy

    Kat Krazy

    12 Kasım 2010
  • Marissah Simonini

    Marissah Sim

    25 HAZİRAN 2013