[자 바스 크 립 트 고급 기술] 변경 방지 대상 + 고급 타이머

4267 단어 JavaScript
모든 대상 이 같은 환경 에서 실 행 될 수 있 는 코드 수정 으로 개발 자 들 은 의외로 다른 사람의 코드 를 수정 하고 호 환 되 지 않 는 기능 으로 원생 대상 을 다시 쓸 수도 있 기 때문이다.왜곡 방지 대상 은 이 문 제 를 해결 할 수 있 는 방법 이다.
1. 변경 방지 대상
1 、 대상 확장 불가
Object. preventExtensions (): 대상 에 게 새로운 속성 과 방법 을 추가 할 수 없습니다.Object. isExtensible (): 대상 을 확장 할 수 있 는 지 확인        대상 에 새 멤버 를 추가 할 수 는 없 지만 기 존 멤버 는 영향 을 받 지 않 고 기 존 멤버 를 수정 하고 삭제 할 수 있다.
2. 밀봉 대상
Object. seal (): 대상 을 밀봉 대상 으로 설정 합 니 다. 밀봉 대상 은 확장 할 수 없고 기 존 속성 과 방법 을 삭제 할 수 없 지만 속성 은 Object. isSealed () 를 수정 할 수 있 습 니 다. 대상 이 밀봉 되 었 는 지 확인 합 니 다.
3. 동결 대상
Object. freeze (): 대상 을 동결 대상 으로 설정 합 니 다. 동결 대상 은 확장 할 수 없고 밀봉 되 어 있 습 니 다. 또한 대상 속성 은 Object. isFrozen () 을 수정 할 수 없습니다. 정상 대상 이 동결 되 었 는 지 여부 입 니 다.
2. 고급 타이머
타이머 에 대해 중요 한 문 제 는 지정 한 시간 간격 이 언제 타이머 코드 를 대기 열 에 추가 하 는 지, 코드 를 언제 실행 하 는 지 를 나타 내 는 것 입 니 다.
먼저 setTimeout () 과 setInterval (): SetInterval 을 사용 하 는 것 은 지연 함수 setTimeout 을 설정 하 는 것 과 유사 합 니 다.setTimeout 은 일정 시간 지연 시 키 고 어떤 조작 을 진행 합 니 다.setInterval 은 코드 를 지정 한 시간 이 지나 면 한 번 씩 실행 할 수 있 습 니 다.setTimeout ("function", time): ID 를 되 돌려 줍 니 다. 이 타 이 머 를 지 울 수 있 습 니 다.setInterval ("function", time): clearInterval () 의 인자 로 ID 를 되 돌려 줍 니 다.SetInterval 은 자동 으로 중복 되 며 setTimeout 은 중복 되 지 않 습 니 다.
1. 반복 되 는 타이머
setInterval () 은 두 가지 문제 가 있 습 니 다. (1) 일부 간격 은 건 너 뜁 니 다.(2) 여러 타이머 의 코드 실행 사이 의 간격 이 예상 보다 작 을 수 있 습 니 다.해결 방법: 체인 호출 setTimeout (). 함수 가 실 행 될 때마다 새로운 타 이 머 를 만 듭 니 다. 이렇게 하면 이전 타 이 머 코드 가 실 행 될 때 까지 대기 열 에 새로운 타 이 머 코드 를 삽입 하지 않 고 정확 한 간격 이 없 도록 합 니 다.
setTimeout(function(){
    //code
    setTimeout(arguments.callee,interval)
},interval)

2. 배열 블록
스 크 립 트 가 장시간 실행 되 는 문 제 는 보통 다음 과 같은 원인 으로 인해 발생 합 니 다. (1) 너무 길 고 깊 은 함수 호출 (2) 을 통 해 대량의 순환 을 진행 합 니 다. 처리 가 동기 화 되 지 않 고 데이터 도 순서대로 완성 되 지 않 으 면 배열 블록 을 나 누 는 방법 을 사용 하여 타이머 로 순환 을 구분 할 수 있 습 니 다.
배열 블록 의 기본 적 인 사고: 처리 할 항목 을 위해 대기 열 을 만 든 다음 타이머 로 다음 처리 할 항목 을 꺼 내 처리 한 다음 다른 타 이 머 를 설정 합 니 다.
function arrayChunk (array,process,context,delay) {
    if(delay) {
        interval = delay;
    } else {
        interval = 100;
    }
    setTimeout(function () {
        var item = array.shift();//       
        process.call(context,item);//       

        if (array.length > 0) {//     ,         
            setTimeout(arguments.callee,interval);
        }
    },interval);
}
var data = ["Hello","I","am","vickygu",",","I","am","so","glad","today"];
    function printValue (item) {
        var arrayDiv = document.getElementById("arrayDiv");
        arrayDiv.innerHTML += item + " ";
    }
    arrayChunk(data,printValue,null,200);

이렇게 하면 200 ms 마다 단 어 를 인쇄 할 수 있다.
3. 함수 절 류
지난 블 로 그 를 만나다.

좋은 웹페이지 즐겨찾기