2010-12-17 21 views
6
var objectliteral = { 
    func1:fn(){}, 
    func2:fn(){}, 
    ................. 
    funcn:fn(){} 
} 

Ben nokta notasyon kullanarak bu nesneyi literal yöntemlerini çağırabilir biliyorum:Braket gösterimini kullanarak üye işlevini nasıl çağırabilirim?

objectliteral.func1(); 

Ama bunu dizi gösterimi kullanarak yapmak istiyorum:

objectliteral[func1]. .... something something...... 

Nasıl yaparım o? Başvurumu veya çağrı yöntemlerini kullanabileceğimi biliyorum - ama hala nasıl çalıştıklarını anlamıyorum.

Bunu yapabilir miyim ?:

objectliteral[func1].apply(); 

xZx50

cevapları:

objectliteral['func1']() 

tek ihtiyacım olan şey. Teşekkürler çocuklar.

cevap

11

Hayır, bunu:

objectliteral['func1'](); 

Ayrıca dinamik bir isim kullanabilirsiniz:

var myfuncname='func1'; 
objectliteral[myfuncname](); 
1

Bu deneyebilirsiniz:

objectliteral['func1'](); 
1

kullanıcıyı objectliteral["funct1"].apply() veya objectliteral["funct1"]().

Ayrıca Sen objectliteral["func1"]();

1

geçirmek için bir değişken kullanabilirsiniz.

1
var func1 = 'func1' 
objectLiteral[func1](); 

çalışmaya almalısınız yapabilirsiniz fonksiyon Adını

var funname = "funct1"; 
objectliteral[funname ]() 
2

Böyle yapabilirsiniz:

var objectLiteral = { 
    func1: function() { alert('func1'); }, 
    func2: function() { alert('func2'); } 
}; 

// This does the same thing... 
objectLiteral['func1'](); 

// As this does 
objectLiteral.func1(); 
İlgili konular