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... :)
Function.prototype.when = function(expression, scope) {
	if (expression) {
		return this.apply(scope);
	}
}

var FooBar = {

	init: function() {
		this.number = 5;
		this.number2 = this.addFive.when(this.number > 1, this);
		console.log(this.number2);
	},

	addFive: function() {
		console.log("Add five to " + this.number);
		return this.number + 5;
	}

}

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.