먼저, JavaScript는 동적인 객체정의가 가능하다.
= 객체를 먼저 만들고 정의를 함.
C#/C++/Java와 같은 언어는 정적인 객체정의를 사용함.
var exam = new Object(); //객체선언
exam.kor = 30; //expand object 확장형 객체라고 칭함.
exam.eng = 50;
exam.math = 70;
alert(exam.kor + exam.eng)//80
너무 편리하다! 하지만... 이러한 점 때문에
var exam = new Object(); //객체선언
exam.kor = 30; //expand object 확장형 객체라고 칭함.
exam.eng = 50;
exam.math = 70;
exam.Kor = 20; //오탈자가 발생한 kor
alert(exam.kor + exam.eng)//expected: 70, result: 80
위 같은 상황에서 버그를 잡기 어렵다. (덜렁대면 큰일난다.)
var exam = new Object();
exam["kor"] = 50;
exam["eng"] = 70;
exam["math"] = 90;
alert(exam["kor"]); //50 /key값(kor,eng,math)를 이용한 값 구하기.
이러한 형태를 Map(Hash)이라고 한다. (Hash = 식별자)