2010-10-12 12 views
5

que estaba leyendo un artículo sobre las mejores prácticas de Javascript, y un poco tengo la confusión sobre qué estructura de función para utilizar ...Javascript: qué estructura de función para utilizar

supongo que podría tener un impacto en el ámbito de las variables y funciones, pero ¿cuál de estas estructuras usaría (y cuál se considera la mejor práctica)?

Estructura 1: utilice los literales de objeto.

var obj1 = { 
    _myvar : 'myval', 

init: function() { 
    this.function1(); 
    this.function2(); 
}, 

function1: function() { 
    alert('function1'); 
}, 

function2: function() { 
    alert('function2'); 
} 
}; 
obj1.init(); 



Estructura 2: envolver el código en una función de auto-ejecución.

(function(){ 
var _myvar = 'myval', 

function1 = function() { 
    alert('function1'); 
}, 

function2 = function() { 
    alert('function2'); 
}, 

init = (function() { 
    function1(); 
    function2(); 
})(); 
})(); 
+0

Relacionados: http://stackoverflow.com/questions/3220870/javascript-should-i-be-hiding-my-implementations – JulianR

Respuesta

3

se utiliza la función anónima autoejecutable cuando no quiere que otros para interferir con su código y/o no quieren utilizar cualquier variable global. Si desea usar esas funciones/objetos/lo que sea en otro lugar, querrá usar el primero.

1

La "Estructura 1" es adecuada cuando necesita acceder a los métodos y variables de un objeto de otras partes de su código. Ese formato siempre debe ser su preferencia cuando escribe código de biblioteca que debe reutilizarse en otro lugar.

La "Estructura 2" es adecuada cuando no desea compartir su código con otras partes de la aplicación, por lo que desea proteger las variables y funciones de cualquier interferencia de cualquier otro lugar.

0

He encontrado que Christian Heilmann's Revealing Module Pattern es bastante útil. (Desplácese hasta la última muestra de código "pantalla verde" en su página.)

Con es un patrón, puede crear todos sus métodos/funciones de forma privada en una función ejecutada anónimamente y luego elegir su interfaz pública mediante el objeto devuelto .

Cuestiones relacionadas