yuzunsang / JS-deep-dive-study

자바스크립트 딥 다이브 스터디✨
0 stars 3 forks source link

[CH17]생성자 함수에 의한 객체 생성 #24

Open yuzunsang opened 3 months ago

yuzunsang commented 3 months ago

[퀴즈 예시] Q. 여기에 퀴즈 설명을 적으세요.

적을 코드가 있다면 밑에 적어주세요. (백틱 3개로 코드를 감싸면 코드 양식을 적을 수 있습니다.)

// 예시 코드
const arr = [1, 2, 3];
console.log("Hello");

아래 코드를 복붙해서 정답을 적어주세요.

<details>
    <summary>정답</summary>
    <div markdown="1">    
    정답 설명
    </div>
</details>
yuzunsang commented 3 months ago

Q. 빈칸을 채워보세요.

생성자 함수를 호출할 때 🟦 를 붙이지 않으면 일반 함수로 호출된다. 이를 방지하기 위한 컨벤션 및 코드 패턴이 존재한다.

생성자 함수를 🟩 케이스로 명명하여 일반 함수와 구별한다.

ES6부터 지원하는 🟨 을 이용해 new 연산자와 함께 생성자 함수가 호출되었는 지 확인할 수 있다.

ES6를 지원하지 않는 경우, 🟪 연산자를 통해 " this 🟪 [생성자함수] " 로 스코프 세이프 생성자 패턴을 이용할 수도 있다.

🟦정답
new(new연산자)
🟩정답
파스칼
🟨정답
new.target
🟪정답
instanceof
bo-eun commented 3 months ago

Q. 다음 함수의 실행 결과를 예상해보고 이유를 설명하세요.

const obj = {
  x() { }
};

console.log(obj.x()); // 1
console.log(new obj.x()); // 2
정답
1. undefined // return값이 없으므로 undefined를 반환한다.
2. TypeError: obj.x is not a constructor // ES6의 메서드 축약 표현으로 constructor(생성자 함수로서 호출할 수 있는 객체)가 아니기 때문에 생성자 함수로 호출할 수 없다.