강의

멘토링

커뮤니티

Inflearn コミュニティ Q&A

enere61636 のプロフィール画像
enere61636

投稿した質問数

Javascript ES6+を正しく学ぶ - 初心者

new.target

에로우함수 new.target

作成

·

197

0

function Person (name) {

  const af = n => {

    this.name = n

    console.log(new.target)

  }

  af(name)

}

const p1 = new Person('재남')

const p2 = Person('성훈')

const p2 같은경우는 new연산자를 안써서 기본적으로 외부함수로 객체도 생성이 안되서 내부함수도 new.tartget이 바인딩안되서 외부함수를 보는데 아무것도 없어서 console창에 아무것도 없는건가요?

javascriptes6

回答 2

0

jaenam님의 프로필 이미지
jaenam
インストラクター

1. 그게 아니라 arrow function은 this 바인딩도 무시하고, new.target도 무시합니다.
따라서 arrow function 내부에서 new.target의 값을 찾으려다가 없으니
스코프체이닝상 상위 스코프를 찾아가고, 거기서도 없으니 undefined가 출력되는 겁니다.

2. 네

0

enere61636님의 프로필 이미지
enere61636
質問者

그리고 new.target을 쓰면 장점이

마지막에 추상클래스처럼 흉내 내는거하고 

또 function Person (name) {

  console.log(new.target)

  if (new.target === Person) {

    this.name = name

  } else {

    throw new Error('Person 생성자함수를 new로 호출해야 해요!')

  }

function Android (name) {

  Person.call(this, name)

}

const p1 = new Android('재남봇')

이럴때 call함수 못쓰게 하고 new연산자를 강제 시키는것일까요?

enere61636 のプロフィール画像
enere61636

投稿した質問数

質問する