관련성 있는 것을 하나[상자]로 관리하기 위해.
어떻게 묶고(변수,배열,객체) 어떻게 동작(함수) 시킬지를 효율적으로 하면 된다.
배열
객체
// 배열 함수
let arr1 = Array(1,2,3,4,5); //함수를 이용해서
// 배열 리터럴
let arr2 = [123,111,118]; // 리터럴에 의한 방법
// 배열 자료들 반복문으로 반환하는 법
for(let k in arr1){console.log(arr1[k])}; // for in : 배열의 인덱스를 반환한다.
// 인덱스를 뽑아준다. 향상된 for구문 => for of 구문
let multiArr = [[],[],[]]
arr2.forEach((arrData) => console.log(arrData)); //화살표 함수
// 객체 함수
let obj1 = new Object() ; //빈 객체 선언
obj1.id = 'doil' ; obj1.addr='seoul' ; obj1['국어'] = 100
// new Object() 사용 세미콜론(;)으로 값을 설정 ; 대괄호 이용
//객체 리터럴 (직접)
let obj2 = {id:'doil',addr:'seoul',국어:100}
// 향상 for
for(let attr in obj2)
// 객체가 여러개 필요할 경우
let std1 = {id:'doil',addr:'seoul',국어:100,영어:89,수학:98};
let std2 = {id:'dori',addr:'busan',국어:90,영어:85,수학:100};
let std3 = {id:'dosam',addr:'daejeon',국어:87,영어:95,수학:94};
// 1. 객체를 만들어서 반환하는 함수를 만듬 -> 여러번 호출해 사용.
// Oldschool
function ObjectCreateFun (이름,주소,국어,영어,수학){
this.id = 이름;
this.addr = 주소;
this.국어 = 국어;
this.영어 = 영어;
this.수학 = 수학;
}
let stdFun1 = new ObjectCreateFun('두환','경기',100,100,85);
let stdFun2 = new ObjectCreateFun('두혁','부산',80,90,88);
// 2. 클래스를 정의해서 클래스를 여러번 생성하는 방법
// New , Trend
class ObjectCreateClass {
constructer(name,address,kor,eng,mat){
this.id = name;
this.addr = address;
this.국어 = kor;
this.영어 = eng;
this.수학 = mat;
}
}
let stdCls1 = new ObjectCreateClass('두열','경기',98,76,87);
모든 객체는 최상위 객체의 기능을 물려 받는다.(직-간접적으로)
기본 메소드는 가지고 있다.
=> 반복 사용 , 시키는 쪽과 동작하는 쪽을 분리 => 함수를 만들때 다양한 형태로 사용될 수 있도록 설계하자.
사용하는 쪽에서 데이터를 결정하도록.
function aaa(start,end,inc){
for(let i = start; i<end ; i=i+inc){
console.log(i);
}
}
// aaa(10,20,2) => 10 부터 20미만의 짝수들.
외부(호출하는 쪽)에서 넘겨준 데이터를 담는 그릇.
처리한 결과 값을 호출하는 쪽에게 보고하는 데이터 역할.
호출하는 쪽에서 자료를 넘겨준 후 함수의 동작을 관여하지 않는다.
함수에서 값을 반환만 할 뿐 호출하는 쪽의 처리는 관여하지 않는다.
함수가 필요로 하는 매개 변수의 자료 개수, 유형 만 파악할 힘만 있으면, 사용할 수 있다.
모든 함수는 변수에 저장할 수 있다.