enloading........
Cita:
Iniciado por ZiTAL Hola a todos, tengo esto:
Código:
var persona = {
nombre: "Felipe",
apellido: "Pino",
presentar: function() {
alert("Mi nombre es " + this.nombre + " " + this.apellido);
}
};
persona.presentar({
});
lo que me gustaria es que le pasase yo el nombre del parametro y su valor, ejemplo:
Código:
var persona = {
// inicializar "nombre" y "apellido"
presentar: function() {
alert("Mi nombre es " + this.nombre + " " + this.apellido);
}
};
persona.presentar({
nombre: "Felipe",
apellido: "Pino",
});
esto como se podria hacer?
Bienvenido al mundo POO!!!! jejeje
Bueno en primera debes separar una
propiedad de un
parametro ya que no puedes, no deberías declarar un parametro y que esta se convierta en una propiedad (
this.nombre)
La mayoría de los frameworks usan esa "forma" (nota que en ningun momento lo inicializan) como una simple TABLA DE DISPERSIÓN
link.
Ahora bien, yendo a tu caso. se haría de esta forma.
Código PHP:
var persona = {
// inicializar "nombre" y "apellido"
initialize:function(data)
{
for(var i in data)
{
if(data.propertyIsEnumerable(i))
{
this[i]=data[i];
}
}
},
presentar: function(param) {
this.initialize(param || {});
alert("Mi nombre es " + this.nombre + " " + this.apellido);
}
};
persona.presentar({
nombre: "Felipe",
apellido: "Pino",
});
Pero no se... no le veo mucho sentido :D pero de esa forma se hace.
Algo que yo siempre hago para estos casos y quiero compartirlo contigo es.
Código PHP:
/**
* propertyIsEnumerable for Safari
* @return Boolean
**/
Object.prototype.propertyIsEnumerable=function(i)
{
return (typeof Object.prototype[i]==="undefined")?true:false;
}
/**
* Length of Object
* @return Int
*/
/*Object.prototype.length = function()
{
var j=0;
for (var i in this) {
if(this.propertyIsEnumerable(i))
{
j+=1;
}
}
return j;
};*/
/**
* Concat Object
* @param {Object} obj Object
* @return {Object} this
*/
Object.prototype.concat = function(obj)
{
for (var i in obj)
{
if(obj.propertyIsEnumerable(i))
{
this[i]=obj[i];
}
}
return this;
};
var a = function()
{
//este método pone variables por defecto en la clase
//o lo que comunmente se conoce como propiedades o variables definidas.
this.make=function(options)
{
//esto es clave porque el primer objeto tiene las propiedades con sus valores por defecto
this.options={
nombre:'tu no tienes nombre y tomo ESTO como default'
}.concat(options || {});
return this;
};
//procesamos de forma normal
this.process=function()
{
alert(this.options.nombre)
}
return this;
};
var b = new a().make({
nombre:'maborak'
});
b.process();
De esta forma puedes tener por un lado variables POR DEFECTO o bien construir esas variables por defecto en base a los parámetros que se te ocurra pasarle al método make.
Y bueno... nose. preguntas? :D
connection closed.