Foros del Web » Programando para Internet » Javascript »

crea funcion para asignar un valor a una propiedad del nombre de la funcion?? no enti

Estas en el tema de crea funcion para asignar un valor a una propiedad del nombre de la funcion?? no enti en el foro de Javascript en Foros del Web. No entiendo esto, encontre un codigo y para estudiar y meterme mas con este ambito lo estoy analizando pero no entiendo esto miren: tengo este ...
  #1 (permalink)  
Antiguo 02/08/2007, 20:16
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 9 meses
Puntos: 1
crea funcion para asignar un valor a una propiedad del nombre de la funcion?? no enti

No entiendo esto, encontre un codigo y para estudiar y meterme mas con este ambito lo estoy analizando pero no entiendo esto miren:


tengo este codigo
Código PHP:
function DWREngine() { }

DWREngine.setErrorHandler = function(handler) {
DWREngine._errorHandler handler;
}; 

y despues de esto repite todas sentencias asi:

Código PHP:
DWREngine.setalgo = function(palabra) {
DWREngine._algo palabra;
}; 

y cuando usa en otra parte del codigo por ejemplo hace asi:

Código PHP:
DWREngine.setalgo(parametro); 
y esa funcion lo unico que hace es

Código:
DWREngine._algo=parametro



porque no hacen directamente en vez de

DWREngine.setalgo(parametro); poner DWREngine._algo=parametro; y listo, se ahorran de llamar a una funcion o directamente crearla
__________________
Dios es la unica fuente de todo bien.

Última edición por ASCENDEDMASTERS; 02/08/2007 a las 20:22
  #2 (permalink)  
Antiguo 02/08/2007, 20:40
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: crea funcion para asignar un valor a una propiedad del nombre de la funcion?? no

Sí bueno, no hay nada que entender ahí, es simplemente una función para asignar una propiedad a un objeto, como bien has dicho.

Puede ser similar al setTime(x) o al setMinutes(x) del objeto Date().

Si tiene alguna ventaja sobre asignar directamente la propiedad dentro del código, es la fácil modificación del código. Si quisiéramos hacer alguna operación siempre que diésemos valor a la variable, bastaría con retocar esa funcion set.
De otra manera habría que rebuscar en todo el código dónde hemos tocado la propiedad.

Otra manera de verlo quizás sea la legibilidad, aunque parece que se puede leer de todas maneras una asignación o una llamada a la función.

Personalmente, sólo utilizo ese método si tengo que operar o transformar el parametro rutinariamente antes de aplicarlo definitivamente a la propiedad en cuestión.



Supongo que en definitiva, será cuestión de mantenibilidad, nada más. Facilita la escalabilidad del código.



Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 02/08/2007, 21:19
Avatar de ASCENDEDMASTERS  
Fecha de Ingreso: julio-2005
Ubicación: Pergamino, Buenos Aires
Mensajes: 302
Antigüedad: 18 años, 9 meses
Puntos: 1
Re: crea funcion para asignar un valor a una propiedad del nombre de la funcion?? no

entonces, solo a las funciones se les puede agregar "propiedades" una vez definidas como si fueran una clase? porque como yo sabia era asi (en el caso que no fueran una función)

calsetal={hola:'saludobienvenida',chau:'saludodesp edida'};
__________________
Dios es la unica fuente de todo bien.
  #4 (permalink)  
Antiguo 03/08/2007, 07:30
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: crea funcion para asignar un valor a una propiedad del nombre de la funcion?? no

Tenemos la forma rápida JSON (que es la que tu conoces):

Código PHP:
calsetal={hola:'saludobienvenida',chau:'saludodespedida'}; 
Pero también existe otra forma, la originaria, que consiste en crear una "clase", un objeto, con sus métodos y funciones:
Código PHP:
function saludo(holachau) {
this.hola hola;
this.chau chau;
this.saludame = function() { alert(this.hola) }
this.despideme = function() { alert(this.chau) }

De momento esta clase o este objeto no tiene ninguna instancia, es decir, no se puede utilizar. Podemos crear cuantas instancias queramos con el operador new:
Código PHP:
var saludo1 = new saludo("hola","adios");
var 
saludo2 = new saludo("buenos días""hasta la vista");
var 
saludo3 = new saludo("qué tal""hasta luego"); 
Lo bueno de esto es que tenemos la clase centralizada, por cada saludo que tengamos instanciado, tenemos también los métodos saludame() y despideme() definidos, de la otra forma para definir métodos (aunque los objetos sean aparentemente iguales) hemos de definirlos para cada instancia.


Así espero que lo veas más claro. Por supuesto no existe la palabra class como en java, pero esto es lo más cercano que tenemos (javascript no es orientado a objetos, es basado en objetos: no tiene herencia, ni encapsulación.

Creo que te vendrá bien esta página para aprender estas cosas que estás preguntando.
Otra página (en inglés) que nos da unos apuntes para "simular" la herencia con prototype es ésta.



Bueno, con todo esto, yo creo que vamos avanzando en el camino

Un saludo!
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:31.