¿Podría proponer alguna solución para implementar una referencia a la variable utilizando cierres o cualquier otro truco?javascript cómo crear la referencia
createReference = function() {
// TODO: how to implement?
};
var x = 5;
var refX = createReference(x); // could be any parameters needed to implement the logic
x = 6;
alert(refX()); // should alert 6
¿Y que pasa contexto como primer argumento y pasar a nombre de la variable (como cadena) y posteriormente evaluar de alguna manera que la referencia en el contexto predefinido. ¿Es esto factible?
He aquí un escenario más completo:
createReference = function(context, prop) {
return function() {
return context[prop];
};
};
Provider = function() {
};
Provider.prototype.x = 5;
Provider.prototype.getXRef = function() {
return createReference(this, 'x');
};
Provider.prototype.incrementX = function() {
this.x = this.x + 1;
};
var provider = new Provider();
var refX = provider.getXRef();
provider.incrementX();
alert(refX());
En el futuro, no haga sus preguntas como comentarios incrustados en el código. Hace que sea muy difícil ver la pregunta y te arriesgas a que la gente la cierre no es una pregunta. – Oded
Me complace haber respondido su pregunta pero, en su escenario actualizado, ¿por qué no usar simplemente: 'Provider.prototype.getXRef = function() {var that = this; return function() {return that.x; }; }; 'para que pueda evitar el uso de una cadena? – brianpeiris
createReference es una forma universal de hacer un truco. Entonces, en una situación diferente, usaré esta forma universal. En tu comentario: no hay método Provider.prototype.getXRef, pero en algún otro método posiblemente me gustaría pasar referencia a algún otro objeto como un parámetro de devolución de llamada, etc. ... Será más fácil escribir createReference (esto, 'x') luego function() {var that = this; return function() {return that.x; }; }; en el uso diario. –