JavaScript dinamik değişken isimleri kullanın
PHP bu gibi inanılmaz korkunç şeyler yapabilirsin:
$a = 1;
$b = 2;
$c = 3;
$name = 'a';
echo $$name;
// prints 1
Javascript ile böyle bir şey yapmanın bir yolu var mı?
E. g. eğer var name = 'the name of the variable';
varsa isim ile değişken name
için bir referans alabilir miyim?
CEVAP
ECMA-/Javascript Objects
Contexts
tümü hakkında da Nesne bir çeşit olan) olduğundan, her bir değişken adı gibi saklanırDeğişkenbir Fonksiyonun durumda. (ya ^strong>Etkinleştirme Nesnesi).
Eğer öyleyse, bu gibi değişkenleri oluşturun:
var a = 1,
b = 2,
c = 3;
Genel kapsamlı(= HİÇBİR işlev, bağlam), örtülü olarak bu değişkenleri yazınGenel nesne(= window
bir tarayıcıda).
Bunlar kullanılarak erişilen alabilir "" veya "ayraç" gösterimde: . nokta
var name = window.a;
ya
var name = window['a'];
Bu sadece, çünkü bu durumda genel nesne için çalışıyorDeğişken NesneGenel Nesnewindow
nesnesinin kendisidir. Bir işlevi Bağlamında, doğrudan erişim yokEtkinleştirme Nesnesi. Örneğin:
function foobar() {
this.a = 1;
this.b = 2;
var name = window['a']; // === undefined
alert(name);
name = this['a']; // === 1
alert(name);
}
new foobar();
new
kendinden tanımlı bir nesnenin yeni bir örneğini (içerik) oluşturur. new
olmadan işlev kapsamı da global
(=pencere). Bu örnek undefined
1
sırasıyla uyarmak olacaktır. Eğer this.a = 1; this.b = 2
değiştirmek istiyoruz:
var a = 1,
b = 2;
Her iki uyarı çıkışları tanımsız olurdu. Bu senaryo, değişkenler a
b
olur mu depolanan Etkinleştirme Nesnesi foobar
, biz erişemiyor (elbette yapabiliriz erişim doğrudan arama a
b
).
PHP dinamik değişken isimleri...
Javascript nesne adı olarak değişken k...
Ruby Metaprogramming: dinamik örnek de...
&Quot;sıkı" kullanın; JavaScript, ...
Nasıl iki JavaScript nesnelerin özelli...