ugrás a tartalomhoz

A függvény hívás helyének scopeja

wiktor · 2007. Jún. 22. (P), 23.10
Rövid leszek. :)

Meg lehet valahogy oldani, hogy a when hívásánál ne kelljen második paraméterben átadni a this-t? Lehet ezt tudni a függvényen belül, hogy mi volt az érvényes scope a függvény hívásakor? Próbálkoztam arguments.callee.caller féle trükkökkel, de egyik se működött. Ez így szépen megy, csak nem tetszik... :)
  1. Function.prototype.when = function(expression, scope) {  
  2.     if (expression) {  
  3.         return this.apply(scope);  
  4.     }  
  5. }  
  6.   
  7. var FooBar = {  
  8.   
  9.     init: function() {  
  10.         this.number = 5;  
  11.         this.number2 = this.addFive.when(this.number > 1, this);  
  12.         console.log(this.number2);  
  13.     },  
  14.   
  15.     addFive: function() {  
  16.         console.log("Add five to " + this.number);  
  17.         return this.number + 5;  
  18.     }  
  19.   
  20. }  
  21.   
  22. FooBar.init();  
Online verzió: http://wiktor.hu/dev/20070622/scope/

Előre is köszi, ha van ötlet!
 
1

Szerintem

sly · 2007. Jún. 29. (P), 12.20
Szerintem nincs más megoldás, legalábbis ebben logikai elrendezésben. Ennél már csak csúnyább kódot lehet belőle csinálni.
2

nekem is úgy tűnik...

wiktor · 2007. Jún. 29. (P), 16.21
Azóta is keresgettem, de semmit nem találtam, így sajnos azt hiszem kénytelen leszek feladni... :) Köszi, hogy megnézted!
3

Objektumba csomagolás

sly · 2007. Jún. 30. (Szo), 15.10
Az előbb jutott eszembe, hogy talán becsomagolhatod egy objektumba és akkor látszólag csak egy paramétert ad át.