[1] 자바스크립트의 탄생
: 전송하는 데이터에 대한 유효성 검사의 필요성
: 폼객체의 유효성 검사를 위해 자바스크립트가 도입됨
: 문서 객체 내에 들어간 것들을 동적으로 바꿀 수 있게 됨
[2] 자바스크립트의 데이터 형식 - 데이터 객체와 wrapper class
: 자바스크립트는 모든 변수가 객체로 되어있다.
: 변수 선언시 참조변수격인 var하나만 사용.
: 즉 오토박싱되어서 변수 안에 들어가기때문에 기본적으로 wrapper class를 사용한다.
부울 Boolean
정수/실수 Number
문자/문자열 String
var num = 3.4 => new Number(3.4);
: 선언만 하고 참조할 객체 값이 들어가지 않은 경우는 undefined로 출력된다.
: 다른 언어에서는 null pointer라고 하는것과 같은 원리
alert(typeof z); 로 출력하면 해당 타입이 출력된다.
var x;
alert(x=="undefined"); 가 아니라 alert(x==undefined); 이렇게 undefined자체로 비교해야 참이 나온다.
어떤 메소드를 사용할 수 있는지에 관해서는 할당되는 객체에 따라 달라진다
[3] Array 생성과 사용
3-1) push/pop 메소드를 이용한 데이터 관리: Stack
: 순서대로만 출력 가능
var nums = new Array();
nums.push(5);
nums.push(10);
nums.push(15);
var n1 = nums.pop(); // 5,10
alert(nums);
3-2) 인덱스를 이용한 데이터 관리: List
: 해당 인덱스를 마음대로 터치 가능
var nums=new Array();
nums[0]=5;
nums[1]=10;
nums[2]=15; //값을 넣을땐 인덱스로 넣었으므로 꺼낼때도 인덱스로 꺼내야 한다.
alert(nums[0]); // 5
자바스크립트는 어떤 데이터든 배열로 받아들일 수 있다.
var nums = new Array(5,10,15,"Hello");
alert(typeof nums[3]); // String
var nums = new Array(5,10,15,"Hello",new Array(2,3,4)); // 배열의 중첩
alert(nums[4][1])// 3 출력
3-3) splice()메소드를 이용한 데이터 관리: List
: 배열 값을 대체하거나 삭제하고 싶을 때
var nums = new Array(5,10,15,"Hello",4);
nums.splice(1); // 1번째부터 값들 지우기 5
nums.splice(1,0); // 1번째부터 0번째 값들 지우기 5,10,15,hello,4
nums.splice(1,1); // 1번째에서 하나만 지우기 5,15,hello,4
nums.splice(1,2); // 1번째에서 두개까지만 지우기 5, hello, 4
nums.splice(2,1,"hi"); // 두번째에서 하나를 지우고 hi를 넣기 5,10,hi, Hello, 4
nums.splice(2,0,"hi"); // 두번째에서 하나를 지우고 hi를 넣기 5,10,hi, 15, Hello, 4
[4] Object 객체
: C++, C#, java는 정의를 하고 객체를 만든다면 (정적인 객체지향)
: JavaScript는 객체를 만들고 나서 객체를 정의함 (prototype, class) (정적인 객체지향)
키를 기반으로 데이터를 저장해야 할 때
var exam = new Object(); //느닷없이 object만들기
exam.kor=30; // 값이 kor속성과 함께 같이 만들어짐 = expand object
exam.eng=70;
exam.math=80;
alert(exam.kor+exam.eng); // 100반환
4-1) 키를 이용한 데이터 관리 :Map
: 자바스크립트에서는 object가 map형을 제공해준다.
var exam = new Object();
exam["kor"] = 30; // exam.kor과 섞어서 사용 가능
exam["eng"]= 70;
exam["math"]=80;
alert(exam["kor"]); // 30
✔ 차이점
exam["kor"] // 문자열이 들어가는것이기 때문에 exam이 가진 속성을 꺼내 쓸때는 exam.kor불가
예)
var key="eng";
// key라는 변수에 담궈놓은 키값 eng를 꺼낼때 사용.