con la Declaración Considerado nocivas
11 de abril 2006 a las 7:52 am por Douglas Crockford | En Desarrollo | 64 Comentarios JavaScript es with la declaración tenía por objeto proporcionar una forma abreviada de escribir accesos recurrentes de objetos. Así que en vez de escribir
ooo.eee.oo.ah_ah.ting.tang.walla.walla.bing = true; ooo.eee.oo.ah_ah.ting.tang.walla.walla.bang = true;
Usted puede escribir
con (ooo.eee.oo.ah_ah.ting.tang.walla.walla) { bing = true; Bang = true; }
Que se parece mucho más agradable. Excepto por una cosa. No hay manera de que se puede saber con solo mirar el código que bing y la bang tendrá modificadas. Se ooo.eee.oo.ah_ah.ting.tang.walla.walla ser modificado? ¿O las variables globales bing y bang obtener una paliza? Es imposible saber con seguridad.
El with sentencia añade los miembros de un objeto en el ámbito actual. Sólo si hay un bing en ooo.eee.oo.ah_ah.ting.tang.walla.walla se ooo.eee.oo.ah_ah.ting.tang.walla.walla.bing acceder.
Si no puede leer un programa y estar seguro de que sabes lo que va a hacer, no se puede tener confianza de que va a funcionar correctamente. Por esta razón, la with declaración debe ser evitado.
Afortunadamente, JavaScript también ofrece una mejor alternativa. Simplemente, puede definir una var .
var o = ooo.eee.oo.ah_ah.ting.tang.walla.walla; o.bing = true; o.bang = true;
Ahora no hay ninguna ambigüedad. Podemos tener confianza en que se ooo.eee.oo.ah_ah.ting.tang.walla.walla.bing y ooo.eee.oo.ah_ah.ting.tang.walla.walla.bang que se están instalando, y no un Las variables desventurados.
Compartir y ampliar: Marcar con del.icio.us | Digg it! | reddit!
Sincrónica v. asíncrono
04 de abril 2006 a las 11:55 am por Douglas Crockford | En Desarrollo | 26 ComentariosXMLHttpRequest puede operar de forma sincrónica o asincrónica. Muchas personas prefieren utilizarlo de forma sincrónica. Cuando se utiliza esta forma, el motor de JavaScript se bloquea hasta que la interacción con el servidor se ha completado. Debido a que bloquea el flujo de control se parece mucho a una invocación de la función normal. Complejidad temporal se extrae, dejando un patrón de programación muy familiar y cómodo. Funciona especialmente bien cuando el servidor está en la misma máquina, o en las cercanías de la LAN. Por desgracia, se puede realizar muy mal si el servidor está bajo carga pesada, o si el navegador se conecta al servidor a través de un enlace lento. Debido a que el motor de JavaScript está bloqueada hasta que la solicitud completa, el navegador se congela. El usuario no puede cancelar la solicitud, no puedes quitar, no se puede ir a otra pestaña. Este es un comportamiento muy malo.
Afortunadamente, XMLHttpRequest proporciona una opción para la operación asincrónica. Cuando se establece la asyncFlag bandera de true , el motor de JavaScript no se bloquea. En cambio, la solicitud se devuelve inmediatamente, con un potencial de acción que se activará más tarde, cuando el resultado de la solicitud que se conoce. El Yahoo! Connection Manager ofrece una interfaz muy agradable para esto.
var = CObj YAHOO.util.Connect.asyncRequest ('GET', 'http://myservice.com?req=update', { éxito: function (respuesta) { alert (response.responseText); }, fracaso: la función (de respuesta) { alert (response.statusText); } });
Que el suministro de dos funciones. Su success la función contiene todo lo que debería ocurrir como resultado de la solicitud de éxito. Así que si la solicitud era obtener algunos JSON texto que debe ser entregado a la app.update método, entonces el success la función podría ser
éxito: function (respuesta) { app.update (eval ('(' + + response.statusText')')); }
La programación asincrónica es un poco más complicado porque la consecuencia de hacer una petición se encapsula en una función en lugar de después de la declaración de solicitud. Sin embargo, el comportamiento en tiempo real que la experiencia de usuario puede ser mucho mejor, ya que no verá a un servidor lento o lento de la red que el navegador de actuar como si se hubiera estrellado. Programación sincrónica es una falta de respeto y no deben ser empleadas en aplicaciones que son utilizadas por la gente.
Compartir y ampliar: Marcar con del.icio.us | Digg it! | reddit!

Copyright © 2006-2012 Yahoo! Inc. Todos los derechos reservados. Política de privacidad - Condiciones del Servicio
Desarrollado por WordPress en Yahoo! Web Hosting .
