function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
var mycar = Car("Eagle", "Talon TSi", 1993);
console.log(mycar.make);
// TypeError: Cannot read properties of undefined (reading 'make') at Object
TypeError 객체나 변수의 값이 정의되지 않은 상태에서 프로퍼티를 참조할 때 발생하는 에러
-> Car 함수를 활용해 mycar에 할당한 것으로 보이지만, mycar에서는 Car 내부에 있는 .make, .model, .year과 같은 프로퍼티를 참조할 수가 없음
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
var mycar = new Car("Eagle", "Talon TSi", 1993);
console.log(mycar.make);
// Eagle
위와 다른 점 하나 "new"
New 연산자
사용자 정의 객체 타입 또는 내장 객체 타입의 인스턴스를 생성
새로운 객체의 인스턴스를 생성하기 위해 new 연산자를 사용
new는 영역(block)을 지정하여 함수 내부의 정의된 내용을 실행해주는 것으로 이해할 수 있음
var car1 = new Car("Eagle", "Talon TSi", 1993, rand);
var car2 = new Car("Nissan", "300ZX", 1992, ken);
" new 연산자를 사용해야 함수 내부의 내용을 변수에 대입 가능 "
Function 생성자 함수
함수 생성시에도 new 생성자를 이용해서 정의
var add = new Function('x', 'y', 'return x+y');
📑참고자료
<https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/new/>
반응형
'IT Study > JavaScript' 카테고리의 다른 글
[JS] 중첩배열 1차원 배열로 만들기(reduce 메서드, 전개문법) (0) | 2023.08.31 |
---|---|
[JS] Object.values(), reduce(), find(), filter() 메서드 (0) | 2023.08.25 |
[JS] 전개문법(+배열 복사, rest 파라미터), Splice() 메서드 (0) | 2023.08.25 |
[JS] 🐰기록하고 보기 위한 '놓치기 쉬운 부분들' (match, 인스턴스, random, 원시값-객체)_엘리스2주차 (0) | 2023.08.24 |
JavaScript의 입출력 (readline 모듈, fs 모듈) +다양한 방식의 반복문 출력 (0) | 2023.08.23 |