E' possibile cambiare lo scope di una funzione in modo che lo stesso della funzione che la eseguirà?
Esempio:
In pratica vorrei che lo scope di "doSomething" fosse quello interno di Test, e che quindi la variabile x sia quella privata di Test.codice:var doSomething=function(){ alert(x); } function Test(){ var x=10; Test.prototype.method=doSomething; }; var t=new Test(); t.method() //mi aspetto alert(10) ma ovviamente mi da errore "x is not defined"
L'unica soluzione che funziona(per modo di dire perchè non va su IE) è di utilizzare eval.
In teoria lo scope di "doSomething" è una "catena" di due oggetti scope, prima quello interno di doSomething e poi quello globale,io vorrei aggiungiure fra i due un altro anello, ossia lo scope interno di Test.
E' possibile tutto ciò?