• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

문제 12번

21.04.20 13:19 작성 조회수 94

1

안녕하세요 강의 잘 듣고 있습니다. 많은 도움이 되고 있어요 감사합니다.

문제 12번에서 class 작성시에

왜 attack 함수는 constructor 내부에서 정의하지 않고 밖에서 정의하나요?
constructor 내부에서 this.attack = function() { console.log('파이어볼') };
이렇게 정의해도 잘 동작하는거 같은데. 만약에 다른점이 있다면 무엇인가요?

감사합니다!

답변 1

답변을 작성해보세요.

2

-J-님의 프로필

-J-

지식공유자

2021.04.20

안녕하세요 답변드리겠습니다. 

constructor 내부에 정의된 함수는 앞으로 인스턴스가 만들어 질때마다 새롭게 메모리에 할당되지만,  constructor 밖에 정의된 함수는 인스턴스가 만들어질 때 참조가 되어 연결되어집니다.

때문에 밖에 정의하는 것이 constructor 내부에 함수를 정의 할 경우에 비해 더 효율적으로 자원을 사용한다고 생각하시면 될것 같습니다. 아래 코드를 참조하시면 좀 더 이해가 잘 되실겁니다.

감사합니다 :)

class Test {
constructor() {
this.fn = function () {
console.log("ex");
};
}
}

const test1 = new Test("1");
const test11 = new Test("2");

console.log(test1.fn === test11.fn); // false

class Test2 {
constructor() {}
fb() {
console.log("ex");
}
}
const test2 = new Test2("1");
const test22 = new Test2("2");

console.log(test2.fb === test22.fb); // true