<script>

        var student = {

            이름: '아무개',

            국어: 92,

            수학: 89,

            영어: 96,

            과학: 98

        };


        // in 키워드(해당 Key 가 있는지 확인 return Boolean)

        var outPut = '';

        outPut += 'Student 에 \'이름\' Key 존재 : ' + ('이름' in student) + '\n';

        outPut += 'Student 에 \'성별\' Key 존재 : ' + ('성별' in student);

        alert(outPut);


        // with 키워드

        var outPut2 = '';

        with (student) {

            outPut2 += '이름 : ' + 이름 + '\n';

            outPut2 += '국어 : ' + 국어 + '\n';

            outPut2 += '수학 : ' + 수학 + '\n';

            outPut2 += '영어 : ' + 영어 + '\n';

            outPut2 += '과학 : ' + 과학 + '\n';

            outPut2 += '총점 : ' + (국어 + 수학 + 영어 + 과학);

        }

        alert(outPut2); 

    </script>


- in 키워드는 객체에 해당 Key 의 존재여부를 Boolean 값으로 return

- with 키워드는 객체['key'] 의 중복코드를 줄이기 위해

   with(Student){} 내에서는 객체명 없이 key 값만으로 데이타를 조작할수 있다.



- escape()

: 영문 알바펫, 숫자, 일부 특수문자를 제외한 모든 문자를 인코딩한다.

- encodeURI()

: escape() 함수에서 인터넷 주소에 사용되는 일부 특수문자는 변환하지 않는다.

- encodeURIComponent()

: 알파벳과 숫자를 제외한 모든문자를 인코딩한다. UTF-8 인코딩과 같다.


EX)

<script>

        // 인코딩, 디코딩 내장함수

        var URI = 'http://www.naver.com?searchVal=다니엘';


        // 출력

        var outPut = '';

        outPut += '★escape()\n';

        outPut += escape(URI) + '\n\n';

        outPut += '★encodeURI()\n';

        outPut += encodeURI(URI) + '\n\n';

        outPut += '★encodeURIComponent()\n';

        outPut += encodeURIComponent(URI) + '\n\n';


        alert(outPut);

</script>





Iterator 과 Enumeration 모두 java.util 패키지에 포함된 반복자 인터페이스

두 반복자 인터페이스 모두 개별요소를 처음부터 끝까지 순차적으로 넘어가며 개별요소에 접근할 수 있다.

차이점은 Snap-Shot 과 Fail-Fast 지원여부이다.


Enumeration 은 반복을 시작하기전에 원본 데이터에 대한 Snap-Shot 을 찍고 해당 Snap-Shot 에 대한 반복을 시작한다.

즉, 원본데이타의 복사? 사본? 에 대해 반복을 실행한다.

그래서 Enumeration 반복 중에 원본데이타에 수정이 일어나도 아무이상없이 반복을 실행한다.

하지만 Snap-Shot 을 찍을때 생기는 비용과 원본과 Snap-Shot 데이타의 무결성을 확신 할 수 없다.


그래서 JDL1.4 때 Iterator 라는 것을 지원했다.

Iterator 는 Fail-Fast 기능을 지원한다. 

Iterator 은 Snap-Shot 찍지않고, 원본데이타의 콜렉션 객체를 참조하여 반복을 실행하기때문에 원본데이타의 수정이 일어나면 예외를 발생시키고 반복을 중지한다.

반복실행시 데이타의 변경&수정이 발생할 때 데이타 무결성을 지키기 위해서 런타임에러(Runtime-Error)를 발생 시키는 것을 Fail-Fast 라고 한다.


EX) Enumeration

ArrayList<integer> integerList = new ArrayList<integer>();

for (int i = 0; i < 20; i++ ) {

integerList.add(i);

}

Enumeration enum = integerList.elements();

while( enum.hasMoreElements() ) {

system.out.println( enum.nextElement() );

}

EX) Iterator

ArrayList<integer> integerList = new ArrayList<integer>();

for (int i = 0; i < 20; i++ ) {

integerList.add(i);

}

Iterator itr = integerList.iterator();


while( itr.hasNext() ) {

system.out.println( itr.next() );

}


* Iterator 을 사용하는게 좋을거 같다는 생각 '- '



+ Recent posts