• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

에로우함수 new.target

20.10.26 12:42 작성 조회수 112

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창에 아무것도 없는건가요?

답변 2

·

답변을 작성해보세요.

0

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

2. 네

0

이순곤님의 프로필

이순곤

질문자

2020.10.26

그리고 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연산자를 강제 시키는것일까요?