Pregunta

No es la persistencia básica de VARs JavaScript / etc. Se llama a una función / método, y la próxima vez que llame a esa misma función / método, que es la celebración de los datos de la última vez.

Puede eliminar los VARs cuando haya terminado con ellos, sino que elimina la ventaja de utilizar el código de nuevo para esa instancia.

Entonces, ¿cuál es la forma adecuada para escribir código que puede ser reutilizado, en los diferentes elementos, dentro de la misma página.

Por lo tanto, necesito la capacidad de escribir código para que puedo señalar que en varios elementos diferentes, y luego interactuar con ese código segregado para cada elemento.

Así que en PHP (como ejemplo) Me gustaría hacer:

$element1 = new MyClass();
$element2 = new MyClass();
$element3 = new MyClass();

En este caso, es el mismo código que se ejecuta en tres ámbitos segregados. ¿Cómo puedo hacer esto correctamente con JS. Incluso el uso de jQuery de extend () me da problemas.

Gracias.

¿Fue útil?

Solución

Para crear una instancia en JavaScript tiene que escribir una función constructora, y llamar a que el uso de nuevo. Por ejemplo:

function MyClass( somevalue ) {
   this.somevalue = somevalue;
   this.somefunction = function() {
     alert(somevalue);
   }
}

var instance1 = new MyClass(1);
var instance2 = new MyClass(2);
var instance3 = new MyClass(3);

Otros consejos

Usar la palabra clave var la hora de definir las variables locales (de lo contrario van a por defecto a las variables globales).

function foo() {
    var i;
    // code code code code
}

Puede namespace el JavaScript para que sea muy parecido a lo que está buscando. Vea a continuación un ejemplo. Suena como su problema está relacionado con el uso de variables globales en las que desee utilizar variables locales, aunque - es decir, se declara myvariable var; fuera de su función, pero sólo desee utilizar y olvidarse de él dentro de su función. En ese caso, declarar la variable dentro de su función para que sea local.

var MyNameSpace = function() {
    return {
        sayhello : function() {
            alert("hello");
        },
        saygoodbye : function() {
            alert("see ya");
        }
    };
}();

Parece que lo que estás buscando es la capacidad de tener instancias de una clase y tienen datos privados que está asociada con cada instancia.

Puede hacer esto utilizando la técnica siguiente:

function Foo()
{
    // Member variable only visible inside Foo()

    var myPrivateVar;       

    // Function only visible inside Foo()

    var myPrivateFunction = function() 
                            { 
                                alert("I'm private!");
                            }

    // Member variable visible to all

    this.myPublicVar = "Hi, I'm public!";

    // Function visible to all

    this.myPublicFunction = function()   
                            {
                                myPrivateVar = "I can set this here!";
                            }
}

Puede crear y utilizar uno de éstos mediante la siguiente sintaxis:

var myFoo = new Foo();

myFoo.myPublicVar = "I can set this!";
myFoo.myPublicFunction();  
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top