Javascript 의 with

3456 단어
with
with 는 역할 영역 체인 을 잠시 수정 합 니 다.
<script>
function a(){
    with (b) { 
        ...
    }
}
a(); </script>

함수 a 가 정의 할 때 a 의 역할 도 메 인 체인 을 확 정 했 습 니 다. 우 리 는 이 체인 의 맨 위 가 전체 대상 window 라 고 생각 합 니 다.
함수 a 가 실 행 될 때 자바 script 엔진 은 콜 object 를 생 성하 여 역할 도 메 인 체인 끝 (window 대상 이후) 에 추가 합 니 다. 문 구 는 with (b) 로 실 행 될 때 b 를 역할 도 메 인 체인 의 끝 에 추가 합 니 다. 따라서 with 안의 변 수 를 찾 으 면 이 체인 의 b 에서 먼저 찾 습 니 다. > 그리고 a 의 callobject 에서 찾 습 니 다. - > 마지막 으로 window 를 찾 습 니 다.with 안의 문 구 를 실행 한 후에 역할 도 메 인 체인 은 원상 태 로 회복 합 니 다 (b 는 역할 도 메 인 체인 으로 이동 합 니 다).
이상 은 예 코드 가 실 행 될 때의 미시적 세계 입 니 다.
with 는 추천 되 지 않 습 니 다. 그 가 역할 도 메 인 체인 을 조작 하기 때문에 with 문 구 를 사용 하기 전에 변 수 를 찾 는 경로 가 길 어 지고 실행 효율 이 떨 어 집 니 다.
어떤 사람들 은 with 가 코드 량 을 절약 할 수 있다 고 생각 할 수 있다. 예 를 들 어
with(document.forms[0]){
    name.value='';
    address.value='';
    email.value='';
}

document. forms [0] 를 적 게 쓸 수 있 습 니 다.  사실 하나의 부분 변 수 를 with 중의 b 를 대체 하 는 것 도 같은 목적 을 달성 할 수 있 고 효율 도 손실 이 없다.
var c=document.forms[0];
    c.name.value='';
    c.address.value='';
    c.email.value='';
  KennyMa   
    :http://www.cnblogs.com/kaima/archive/2009/03/11/1408748.html

좋은 웹페이지 즐겨찾기