cómo ejecutar una función cada vez que llamo a un objeto

Estoy creando un marco de Javascript y este es mi problema: tengo un objeto y una matriz. Necesito borrar la matriz cada vez que llamo al objeto.

var obj = 
{
 ary : [],
 getById :function(id){  this.ary[ary.length]= document.getElementById(id); return obj; },
 getByNames :function(names){ //loop over the names parameter and get element by names and then add these elements to the array; return obj; },
show :function(){// in here i loop over the array and show elements}

}

Todo lo que necesito saber es cómo borrar esa matriz cada vez que recuerdo el objeto obj

//this works perfectly 
obj.get('id').show();
//but when i recall it again like this in debugger mode i see the array have 2 elements not 1 
obj.get('another id').show();

Todo lo que quiero es hacer que cada vez que se llame al obj borre la matriz.

Necesito mencionar que tendré una cadena en esto, quiero decir así

obj.getById (''). getByNames ('');

así que necesitaré la matriz por cadena y luego borrarla en la próxima llamada del objeto

Saludos

preguntado el 10 de mayo de 11 a las 13:05

2 Respuestas

Si por "recordar el objeto obj" te refieres return obj; entonces solo busca y reemplaza return obj; con this.arr=[]; return obj; para borrar la matriz cada vez que regrese obj.

Edit:

ok, por lo que solo desea borrar la matriz cuando comience una nueva cadena. la única forma en que puedo pensar es hacer algo como obj.clr().getById('').getByNames(''); y añade clr: function() {this.ary=[]; return this;} a obj

contestado el 10 de mayo de 11 a las 17:05

tienes razón si no hay encadenamiento, devuelvo el objeto obj para usar otro selector, así que necesitaré qué hay en la matriz durante algún tiempo edité mi pregunta eche un vistazo gracias por su respuesta - Marwan

su idea es buena, pero ¿no puede haber algo que el desarrollador no valga la pena aclararlo él mismo como lo que en jquery? Marwan

bueno, creo que puedo borrar la matriz por operación, me refiero a algo como cuando llama a la función show, la matriz se borra, pero en algún momento algunas operaciones devuelven algo para encadenar, de lo contrario, los selectores Marwan

No conozco ninguna forma de diferenciar entre obj.getById(''); obj.getByNames(''); y obj.getById('').getByNames(''); - herostwist

es solo un ejemplo de encadenamiento como jquery do getById para obtener, por ejemplo, un contenedor y luego getByNames para obtener elementos con nombres de pila dentro de ese contenedor - Marwan

La primera línea de la función que podrías hacer this.arr.length = 0 que truncará la matriz para que no tenga miembros.

contestado el 10 de mayo de 11 a las 17:05

sí, pero necesito otra solución en lugar de tener muchos selectores que necesitaré para mantener los elementos en la matriz durante algún tiempo como obj.getById (''). getByNames ('') para ese caso necesitaré los elementos en la matriz para encadenar lo siento por no mencionar eso en la pregunta :) y gracias por su respuesta - Marwan

así que lo necesito por cadena para que se mantenga en la matriz, así que después de completar el encadenamiento y llamo al objeto nuevamente, encuentro la matriz clara - Marwan

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.