왜 함수로 객체를 찍어내는가 why?
→객체가 여러개 필요할 경우 모두 직접 작성하면 시간도 오래걸리고 힘들다는 단점이 존재함
→ 해결 : 생성자 함수
function ComputerClass(name,professor,classno){
this.name = name;
this.professor = professor;
this.classno = classno;
this.printInfo = function () {
console.log(`${this.name} 강의 ${this.classno} 분반입니다. 교수님은 ${this.professor}입니다.`);
}
}
this.변수 != 변수 다르다!
this.변수는 함수 안에서 사용된 변수이고생성자 함수로 객체 만들기
var 변수이름 = new 생성자함수(인자)
예제
var class1 = new ComputerClass('운영체제','이동희',2);
var class2 = new ComputerClass('데이터베이스','홍의경',1);
생성자 함수 예제
function armyInfo(name,job,number){
this.name = name;
this.job = job;
this.number = number;
this.printInfo=function(){
console.log(`${this.name}의 병과는 ${this.job}입니다. 번호는 ${this.number}입니다.`);
}
}
var jitae = new armyInfo("jitae","네트워크병",1);
jitae.printInfo();
함수 또한 객체이다. → 변수에 함수를 담을 수 있다.
일급 객체로서의 함수(=객체가 하는 기능을 함수도 할 수 있다!)
변수에 함수를 대입할 수 있다. 예제 코드
var add = function addSum(num1,num2){
return num1+num2;
}
typeof add; -> function
add(1,2); ->3
함수 이름 생략도 가능함
var add = function (num1,num2){
return num1+num2;
}
다른 함수의 인자나 리턴값을 사용할 수 있다.(log도 함수…!)
console.log("두 수의 합계는 " + add(1,2) +"입니다.");
함수 또한 객체이기에 다른 곳(배열이나 객체)에 저장이 가능하다.
//더해주는 함수
var add = function (num1,num2){
return num1+num2;
}
//빼주는 함수
var sub = function (num1,num2){
return num1-num2;
}
//계산기 함수
var calculator = [add,sub];
//calculator 첫번째 값 즉 add함수에 1,2를 인자로 넣습니다.
calculator[0](1,2);
//calculator 두번째 값 즉 add함수에 2,4를 인자로 넣습니다.
calculator[1](2,4);
//객체에 담기
calculator = {add,sub};
calculator.add(2,3); //5
calculator.sub(2,3); //-1