Ahora, creo un archivo .js con muchas funciones y luego lo vinculo a mis páginas html. Eso funciona, pero quiero saber cuál es la mejor manera (buenas prácticas) para insertar js en mis páginas y evitar conflictos con el alcance ... Gracias.JavaScript: alcance global
Respuesta
Quizás no sea la MEJOR manera, pero muchos sistemas PHP (te estoy mirando, Drupal) toman el nombre de su plugin particular y lo anteponen a todos los nombres de sus funciones. Podría hacer algo similar, agregar el nombre de su capacidad a los nombres de sus funciones: "mything_do_action()"
Alternativamente, podría adoptar un enfoque más "OO", crear un objeto que encapsule su capacidad y agregar todo sus funciones como miembro funciones en TI. De esa forma, hay una sola cosa en el ámbito global de la que preocuparse.
Estoy tratando de aprender OO con JavaScript pero es difícil para mí. Hay mucha sintaxis para hacer una simple "clase" o cualquier otra cosa en JavaScript :) Gracias. – thomas
La mejor manera es crear un nuevo alcance y ejecutar allí su código.
(function(){
//code here
})();
Esto se utiliza mejor cuando se tiene acceso al alcance global como mínimo.
Básicamente, esto define una función anónima, le da un nuevo alcance y la llama.
¿Qué significa "()"? ¿Algún enlace sobre eso? ¿Y qué hay de window.onload? ¿Dónde debería poner eso? ¿Hay algo de práctica tipo bootstrap en JavaScript? Gracias. – thomas
Personalmente, creo que es más fácil entender una función anónima si lo ves todo en una línea. Desafortunadamente no tengo saltos de línea en los comentarios, pero si lo piensas de esta manera: es como ejecutar una función ya existente, pero en lugar de usar el nombre de la función, colocas la definición de la función entre corchetes. – lucideer
Puede hacer esto, por ejemplo: (function (param) {/ * * /}) ('param value'); – lucideer
Una idea simple es utilizar un objeto que representa el espacio de nombres:
var NameSpace = {
Person : function(name, age) {
}
};
var jim= new NameSpace.Person("Jim", 30);
Usted puede envolver en una función anónima como:
(function(){ /* */ })();
Sin embargo, si tiene que volver a utilizar todas las funciones de javascript que ha escrito en otros lugares (en otros scripts), es mejor que cree un único objeto global al que se pueda acceder. O bien como:
var mySingleGlobalObject={};
mySingleGlobalObject.someVariable='a string value';
mySingleGlobalObject.someMethod=function(par1, par2){ /* */ };
o la alternativa, la sintaxis más corta (que hace lo mismo):
var mySingleGlobalObject={
someVariable:'a string value',
someMethod:function(par1, par2){ /* */ }
};
Esto entonces se puede acceder más tarde a partir de otras secuencias de comandos como:
mySingleGlobalObject.someMethod('jack', 'jill');
Creo que es más seguro envolver siempre tu código con (function() {/ * * /})(); solo en caso de que incluyas un script que está mal terminado. Entonces, supongo que podría agregar su mySingleGlobalObject al "documento", por ejemplo, para compartirlo con otros scripts. – endavid
- 1. ¿Eva de Javascript en alcance global?
- 2. entendimiento global y alcance local en Javascript
- 3. JavaScript: ¿declara alcance global para la función anidada?
- 4. Insertar objetos en el alcance global en ASP/Javascript clásico
- 5. Configuración Server.ScriptTimeout de alcance global?
- 6. BlackBerry - KeyListener con alcance global
- 7. Preguntas de comprensión del Alcance Global Variable
- 8. Cierre/alcance JavaScript/jQuery
- 9. Variable global que no tiene alcance mundial
- 10. Confundiendo problemas de alcance global de C++
- 11. función javascript alcance
- 12. JavaScript alcance cláusula catch
- 13. Javascript Global Objects
- 14. Javascript para variables de índice de bucle se vuelven parte del alcance global?
- 15. Especifique el alcance para eval() en JavaScript?
- 16. alcance JavaScript y el cierre
- 17. mantener el alcance con javascript
- 18. Clase y alcance en Javascript
- 19. Variables definidas en alcance global con nombres idénticos
- 20. Uso de variables estáticas y funciones en el alcance global
- 21. Cómo hacer javascript variable global
- 22. Javascript: ¿Cómo borrar un SetTimeout no global (cerrado)?
- 23. Diferencia entre 'global' y 'estática global'
- 24. Ámbito global vs espacio de nombres global
- 25. Alcance variable de Javascript dentro del ciclo
- 26. Pregunta de ejemplo de JavaScript: alcance/cierre léxico - Eloquent Javascript
- 27. Javascript: Alcance de una variable en diferentes archivos Javascript
- 28. ¿JSONRequest es un objeto JavaScript global?
- 29. ¿Cómo declarar una variable global en JavaScript?
- 30. Añadir try/catch global a JavaScript
http: //javascript.crockford.com/code.html – Anders