Bueno, traté de averiguar si esto es posible de alguna manera. Aquí está el código:miembro privado de Javascript en el prototipo
a=function(text)
{
var b=text;
if (!arguments.callee.prototype.get)
arguments.callee.prototype.get=function()
{
return b;
}
else
alert('already created!');
}
var c=new a("test"); // creates prototype instance of getter
var d=new a("ojoj"); // alerts already created
alert(c.get()) // alerts test
alert(d.get()) // alerts test from context of creating prototype function :(
Como ve, traté de crear un prototipo getter. ¿Para qué? Bueno, si usted escribe algo como esto:
a=function(text)
{
var b=text;
this.getText=function(){ return b}
}
... todo debería estar bien .. pero en realidad cada vez que crear el objeto - i crear la función getText que utiliza memoria. Me gustaría tener una función prototípica en la memoria que haría lo mismo ... ¿Alguna idea?
EDIT:
traté solución dada por Christoph, y parece que su única solución conocida por el momento. Es necesario recordar la información de identificación para recuperar el valor del contexto, pero toda la idea es agradable para mí :) Id es solo una cosa para recordar, todo lo demás se puede almacenar una vez en la memoria. De hecho, podría almacenar una gran cantidad de miembros privados de esta manera, y usar en cualquier momento solo una identificación. En realidad, esto me satisface :) (a menos que alguien tenga una mejor idea).
someFunc = function()
{
var store = new Array();
var guid=0;
var someFunc = function(text)
{
this.__guid=guid;
store[guid++]=text;
}
someFunc.prototype.getValue=function()
{
return store[this.__guid];
}
return someFunc;
}()
a=new someFunc("test");
b=new someFunc("test2");
alert(a.getValue());
alert(b.getValue());
esto parece un duplicado de [otra pregunta] (http://stackoverflow.com/questions/436120) –