Bununla _this çatışma adında bir değişken yaratmak mıdır?

oy
2

Bu çok yapmacık örnektir, ancak biz, değişken oluşturmak varsayalım _thisbir sınıf işlevinde bir yerlerde.

class Person {
  constructor (public name : string) {}
  changeName(name) {
    var _this = {};
    (() => {
      this.name = name;
    })();
  }
}

Dediğimiz bu kadar beklenen çalışmayacak changeNamederlenmiş kod ilgili kısmı aşağıdaki gibidir çünkü işlevi:

var _this = this;
var _this = {};
(function () {
  _this.name = name;
})();

Bu kötü JavaScript: biz iki sahip varbirbirlerinin üzerine yazılmasını bildirimleri. _thisDerleyici tarafından oluşturulan benim yazılır ediliyor _this.

Bildiğim kadarıyla gördüğünüz gibi, bu davranış typescript spec belirtilmedi.

Neden çelişebilir gerekir? Derleyici Ben adında bir değişken oluşturduk eğer algılayamaz _thisve başka otomatik olarak oluşturulan bir bir isim, ister _this2birbirini ayaklar altına benim değişkenleri ve derleyici tarafından oluşturulan olanları tutmak için?

Oluştur 03/10/2012 saat 15:08
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
7

Derleyici otomatik yaratacak _thisbir referans olarak thislambda sözdizimi kullanılarak oluşturulacak kapanmasını kolaylaştırmak için. Ben bir yere typescript şartnamede okumak eminim, ama ben derleyici bu durumda bir hata yayarlar gerektiğini kabul ediyorum.

Bu "deyimsel" (ve bu nedenle öngörülebilir) javascript üretme belirtilen amaç ile çakışan gibi javascript yayar nasıl değişen derleyici fikrini sevmiyorum.

Cevap 03/10/2012 saat 15:27
kaynak kullanıcı

oy
0

Eğer bir saklıdır değişkeni dediğimiz değil mi? Sana "bu" veya "belge" ya adlı bir değişken bildirmek olmaz sanırım.

Sürece MS ayrılmış değişkenler ne olduğu net olarak, ben büyük bir sorun var sanmıyorum. Onlar belki olsa çıkış uyarılarına derleyici artırabilirsiniz.

Cevap 03/10/2012 saat 15:27
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more