Originariamente inviato da whisher
Colgo l'occasione per segnalare

http://www.packtpub.com/object-orien...libraries/book

da 10 e lode

e meditare su questo codice

Codice PHP:
function Hero(name) {
    
this.name name;
}
var 
Hero('Leonardo');
alert(name);
alert(window.name);

function 
C2() {
    
this.1
    return {
b2};
}
var 
c2 = new C2();
alert(typeof c2.a);
alert(c2.b); 

Grazie della segnalazione, libro interessante.

Nel secondo caso (classe C2) non si avrà mai accesso ad un oggetto della classe C2 perché vai a modificare il return this implicito che avviene di default quando istanzi un oggetto, e al posto di quello gli dici di restituire sempre l'oggetto {b: 2} creato a runtime, che non ha alcuna proprietà "a" definita.

Il primo caso invece rivela la criticità di IE con cui mi sono scontrato: se nella classe Hero si prova a sostituire
this.name = name
con
name = name

sembra di capire che il parser di IE non legge l'espressione da destra verso sinistra come dovrebbe.
La variabile name che si vuole definire prima dell'operatore di assegnazione "=" non ha ancora un valore ma IE la mette già nello stack, e se è uguale a sé stessa vuol dire che non ha valore.