Creación de clase/objeto Jquery y un pequeño problema. Curioso por qué "nuevo" no funciona
Frecuentes
Visto 105 veces
1
Tengo dos peticiones, si se me permite.
Lo menos importante, pero me encantaría conocer su opinión sobre mi código a continuación. Cualquier forma de mejorarlo. ¿Hacerlo más portátil/robusto, etc.?
Parece que cuando se crea un "Nuevo", el código no funciona completamente. Mi conjetura es que realmente no estoy creando un objeto válido. Qué estoy haciendo mal.
Esto no funcionó al intentar crear un nuevo objeto.
var ll_port2 = New ll_port;
ll_port2.init({'aa':'#_div1','bb':'#_div2','cc':'1000'}); <-- no work
si nunca hago un artículo nuevo, funciona, ala:
ll_port.init({'aa':'#_div1','bb':'#_div2','cc':'1000'}); <-- works
Código a continuación:
var ll_port = {
items:{
outside: /billabong|newage/,
},
assign: function(){
ccont = this.items.aa;
if (typeof $(ccont) === 'object' && $(ccont).css('z-index') && $(ccont).css('z-index') != this.items.cc) {
$(ccont).css('zIndex','').css('zIndex', this.items.zi);
}
},
closeit:function(){
if($(this.items.bb).length && $(this.items.bb).is(':visible')){
$(this.items.bb).hide();
}
},
strL: function(){
var _self = this;
$("body :not(" + _self.items.aa + ")")
.mousedown(function(event){
event.stopPropagation();
_self.closeit();
_self.assign();
});
$('iframe').live('mouseover',
function () {
if(_self.items.outside.test($(this).attr('src'))){
_self.closeit();
}
});
},
init: function(data){
$.extend(this.items, data);
this.strL();
var _self = this;
setTimeout(function(){
_self.assign();
}, 1500);
}
};
ll_port.init({'aa':'#_div1','bb':'#_div2','cc':'1000'});
2 Respuestas
2
New
(además del error tipográfico, que debería ser new
) solo debe usarse en function
No está en los objetos.
Y esas funciones debemos ser constructores.
El nuevo operador crea una instancia de un tipo de objeto definido por el usuario o de uno de los tipos de objeto integrados que tiene una función de constructor.
Respondido el 12 de junio de 12 a las 19:06
2
Necesitas hacer ll_port
una función, no un objeto.
var ll_port = function(){
//... all your stuff
this.items = {outside: /billabong|newage/};
}
Entonces puedes usar var ll_port2 = new ll_port()
Consulte aquí para obtener más información sobre Programación Orientada a Objetos con JS
Respondido el 12 de junio de 12 a las 20:06
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript jquery or haz tu propia pregunta.
ll_port
no es una función constructora. no puedes usarnew
con eso. - Esailija