SORU
25 ŞUBAT 2011, Cuma


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
25 ŞUBAT 2011, Cuma


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).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ELawshea

    ELawshea

    26 Mayıs 2008
  • michellefeng's channel

    michellefeng

    26 Kasım 2006
  • sknbp

    sknbp

    16 Kasım 2006