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

  • celebrateubuntu

    celebrateubu

    23 Mayıs 2011
  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • WiseOwlTutorials

    WiseOwlTutor

    21 EKİM 2011