tengo el siguiente javascript:Javascript creación de objetos mejores prácticas
var MyObject = (function() {
function Setup(args) {
this.prop1 = args.x;
this.prop2 = args.y
this.prop3 = this.prop1 + this.prop2;
this.Create = function() {
return 'a' + helperFunc();
}
function helperFunc() {
return this.prop3;
}
}
return {
init : function(args) {
var setup = new Setup(args);
setup.Create();
}
}
})();
$(function() {
MyObject.init(someArgs);
});
¿Es mi enfoque para la construcción de objetos de una buena práctica?
Recibo
undefined
en el helperFunc cuando intento accederthis.prop3
.También han tratado de asignar
this.prop1 + this.prop2
a una variable local y utilizar una función para devolver este valor, así:function Setup(args) { var total; this.prop1 = args.x; this.prop2 = args.y total = this.prop1 + this.prop2; this.getTotal = function() { return total; }; this.prop3 = this.prop1 + this.prop2; ...
... y cuando se llama a esto en el helperFunc como esto:
return this.getTotal();
.. me sale this.getTotal
no es una función
He estado leyendo acerca de la creación de objetos y el uso de cierres para imitar a miembros privados, y así sucesivamente, y dado que no hay una sola forma de definir objetos, me estoy confundiendo.
TBH - Yo no entiendo muy bien el constructo:
var myObject = (function() { ... }();
que he visto que se usa mucho en los plugins jQuery pero ¿qué la primera parenth seguido por parenth vacío al final decir y hacer?
Cualquier conocimiento impartido sería muy apreciado.
Además, he pedido el libro de Douglas Crockford en JavaScript y hasta que llegue tengo que tratar de resolver este problema
http://stackoverflow.com/questions/3921922/what-does-this-mean-function-x-y-a-b-in-javascript – mplungjan
Aquí hay muchas preguntas. Sería mucho más fácil proporcionar respuestas precisas y precisas si intenta limitarse a una pregunta por pregunta. –
mplungjan: ese es un enlace perfecto para entender el parenth al final de una llamada de función. Solo necesito entender por qué estoy indefinido cuando llamo a una propiedad y no a una función cuando llamo a una función ... –