• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

함수표현식질문

20.10.26 11:58 작성 조회수 110

0

function G () {}

G.method1 = function () {}

G.prototype.method2 = function () {}

const g = new G()

이거하고

const b = function() {}

console.log(b.name)

차이점이

아래는 변수명이 b 하나니까 프로퍼티 name 읽어서 부르는데 위는 G.method1로 읽을지 method1로 읽을지 정의가 애매하다고 하셧는데 G.method1 = function(){}하면

function G() { 

    method1 (){}

}

이게 이렇게 되고 여기서 const g= new G()에서 생성자함수로서 객체 리턴해서 const g = {method1(){}}되는거 아닌가여?? 제가 이해가 안되서 조금만 더 설명해주시면 감사하겠습니다 TT

답변 1

답변을 작성해보세요.

1

g 객체는 다음과 같이 생겼습니다.

{
  __proto__: {
    method1: function() {}
  }
}

'읽을지 애매하다'라는건 우리 입장에서 애매하다는게 아니라,
자바스크립트의 명세를 정의하는 기관인 TC39에서 생각할 때
name 프로퍼티에 어떤 값을 넣기로 정의할 지가 애매하다는 뜻이었습니다.

name: "method1" 로 할 지,
name: "g.method1" 로 할 지,
name: "g.__proto__.method1"로 할 지...