Amennyiben létrehozásával változó nevű _this konfliktus ezzel?

szavazat
2

Ez egy nagyon kitalált példa, de tegyük fel, létrehozunk egy változót _thisvalahol egy osztályban funkciót.

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

Ez nem a vártnak megfelelően, ha hívjuk a changeNamefunkciót, mert a vonatkozó része a lefordított kód így néz ki:

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

Ez rossz Javascript: van két varnyilatkozatok egymást írják felül. A _thislétrehozott, a fordító által felülírása az én _this.

Amennyire én látom, ez a viselkedés nem meghatározott géppel spec.

Miért ellentétesek? Nem lehet a fordító érzékeli, ha már létrehoztunk egy változót nevű _thisés nevezze az automatikusan generált egy valami mást, szeretnék _this2tartani a változók és a fordító által generált azok is a taposás egymástól?

A kérdést 03/10/2012 15:08
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
7

A fordítóprogram automatikusan létrehoz _this, mint a referencia, hogy thisbezárását elősegítő hogy lesz használatával létrehozott lambda szintaxis. Biztos vagyok benne, olvastam ezt a géppel leírás valahol, de én egyetértek azzal, hogy a fordítóprogram kell kibocsátania hiba ebben az esetben.

Nem tetszik az ötlet a fordító változó hogyan bocsát javascript, mivel ez ellentétes a kitűzött cél generáló „köznyelvi” (és ezért kiszámítható) javascript.

Válaszolt 03/10/2012 15:27
a forrás felhasználó

szavazat
0

Hát nem, mit neveznék fenntartva változó? Azt hiszem, akkor nem, hogy egy változót az úgynevezett „ez”, vagy a „dokumentum” sem.

Amíg MS világos, hogy mi a lefoglalt változók, nem hiszem, van egy nagy probléma. Ők talán javítani a fordító kiadási figyelmeztetések ellenére.

Válaszolt 03/10/2012 15:27
a forrás felhasználó

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