유해 간주 정책과

년 | 7시 52분에서 2006년 4월 11일는 더글러스 Crockford에 의해 오전 개발 | 64 코멘트

JavaScript의 with 진술은 개체에 반복 접근을 작성하기위한 속기를 제공하기위한되었다. 그래서 그 대신 작성

  = true를 ooo.eee.oo.ah_ah.ting.tang.walla.walla.bing;
 ooo.eee.oo.ah_ah.ting.tang.walla.walla.bang = TRUE; 

당신이 작성할 수 있습니다

  와 (과 ooo.eee.oo.ah_ah.ting.tang.walla.walla) {
     빙 = TRUE;
     빅뱅 = TRUE;
 } 

그것은 예전보다 낫네요. 한가지만 빼고. 당신이 코드를 보면 전혀 알 수가 없습니다 bingbang modifed 얻을 것이다가. ooo.eee.oo.ah_ah.ting.tang.walla.walla 수정할 수? 또는 전역 변수를합니다 bingbang 사방에서 공격나요? 그것은 확실히 아는 것은 불가능하다.

with 성명은 현재 범위 객체의 멤버를 추가합니다. 가있는 경우에만 bingooo.eee.oo.ah_ah.ting.tang.walla.walla 됩니다 ooo.eee.oo.ah_ah.ting.tang.walla.walla.bing 액세스할 수 있습니다.

당신이 프로그램을 읽고 당신이 무슨 짓을 알고 확신할 수 없다면, 당신은 그것이 제대로 작동 것이라는 확신을 가질 수 없습니다. 이런 이유로 들어, with 문장은 피해야한다.

다행히도 JavaScript는 또한 더 나은 대안을 제공합니다. 우리는 단순히 정의할 수 있습니다 var .

  var에 O = ooo.eee.oo.ah_ah.ting.tang.walla.walla;
 = true를 o.bing;
 o.bang = TRUE;

지금도 모호가 없습니다. 우리가 확신을 가질 수 ooo.eee.oo.ah_ah.ting.tang.walla.walla.bingooo.eee.oo.ah_ah.ting.tang.walla.walla.bang 일부 설정되지 않음되고있다는 것을, 그리고 불운한 변수.

공유 및 확장 : del.icio.us로 스크랩 | 디그 그것! | 레딧!

동기 대 비동기

년 | 11시 55분에서 2006년 4월 4일는 더글러스 Crockford에 의해 오전 개발 | 26 코멘트

XMLHttpRequest의 동기 또는 비동기가 작동할 수 있습니다. 많은 사람들이 동기를 사용하는 것을 선호합니다. 서버와 상호 작용이 완료될 때까지이 방법을 사용하면, 자바 스크립트 엔진이 차단됩니다. 그것 차단하기 때문에 제어의 흐름이 일반적인 함수 호출과 같은 많이 보인다. 시간적 복잡도가 매우 친숙하고 편안한 프로그래밍 패턴을 떠나, 거리에 추출됩니다. 서버가 동일한 컴퓨터에, 또는 인근 LAN에 때 특히 잘 작동합니다. 불행히도, 서버가 부하가있다면 매우 나쁘게 수행하거나, 브라우저는 속도가 느린 링크를 통해 서버에 연결되어있는 경우. 요청이 완료될 때까지 자바 스크립트 엔진이 차단되기 때문에 브라우저가 얼어 것입니다. 사용자가 요청을 취소할 수 없습니다, 멀리 클릭할 수없는 다른 탭으로 이동 수 없습니다. 이것은 매우 나쁜 동작입니다.

다행히도, XMLHttpRequest의 비동기 작업은 옵션을 제공합니다. 당신은 설정하면 asyncFlag 에 플래그를 true , 자바 스크립트 엔진은 차단되지 않습니다. 대신 요청이 요청에 대한 결과가 알려진 경우 나중에 실행 될 잠재적인 동작과 함께 즉시 반환합니다. 야후! 연결 관리자는 이것에 대한 아주 좋은 인터페이스를 제공합니다.

  var에 cObj = YAHOO.util.Connect.asyncRequest ({ 'http://myservice.com?req=update', 'GET'
     성공 : 기능 (응답) {
         경고 (response.responseText);
     }
     실패 : 기능 (응답) {
         경고 (response.statusText);
     }
 }); 

당신은 두 가지 기능을 제공합니다. 귀하의 success 함수는 요청이 성공의 결과로 발생해야합니다 모든이 포함되어 있습니다. 요청이 몇 얻을 수있다면 그래서 JSON의 로 전달되어야 텍스트 app.update 방법을, 다음 success 함수는 수

  성공 : 기능 (응답) {
         app.update (평가를 ( '('+ response.statusText + ')'));
     } 

요청을 만드는 결과가 대신 요청 정책을 다음의 함수에 캡슐이기 때문에 비동기 프로그래밍은 약간 더 복잡합니다. 그러나 그들은 느린 서버 또는 느린 네트워크가 그것이 충돌했다 것처럼 브라우저가 행동 원인이 표시되지 않으므로 사용자 경험을 상당히 잘 수있다는 실시간으로 동작. 동기 프로그래밍 무례한하고 사람들이 사용하는 애플 리케이션에 고용해서는 안됩니다.

공유 및 확장 : del.icio.us로 스크랩 | 디그 그것! | 레딧!

야후에 의해 호스팅

저작권 © 2006년부터 2011년까지 야후 주식 회사 판권 소유. 개인 정보 보호 정책 - 서비스 약관

에서 제공하는 워드 프레스 에서 야후! 웹 호스팅 .