• 왜 함수로 객체를 찍어내는가 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();
    
  • 함수 또한 객체이다. → 변수에 함수를 담을 수 있다.

    • 일급 객체로서의 함수(=객체가 하는 기능을 함수도 할 수 있다!)

      1. 변수에 함수를 대입할 수 있다.
      2. 다른 함수의 인자나 리턴값을 활용 가능하다.
      3. 배열 객체 등의 자료구조에 대입이 가능하다.
    • 변수에 함수를 대입할 수 있다. 예제 코드

      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