inflearn logo
강의

Khóa học

Chia sẻ kiến thức

JavaScript cốt lõi

extendClass 함수 구현시 IIFE를 사용하는 것과 그냥 일반 함수를 사용하는 것의 차이가 무엇인지 궁금합니다.

Đã giải quyết

295

mhr

52 câu hỏi đã được viết

0

var extendClass1 = (function() {
  function Bridge() {}
  return function(Parent, Child) {
    Bridge.prototype = Parent.prototype;
    Child.prototype = new Bridge();
    Child.prototyep.constructor = Child;
  }
})();

var extendClass2 = function() {
  function Bridge() {}
  return function (Parent, Child) {
    Bridge.prototype = Parent.prototype;
    Child.prototype = new Bridge();
    Child.prototype.constructor = Child;
  }
}

var extendClass3 =function (Parent, Child) {
  function Bridge(){};
  Bridge.prototype = Parent.prototype;
  Child.prototype = new Bridge();
  Child.prototype.constructor = Child;
}

위의 extendClass1, 2, 3의 차이가 무엇인지 궁금합니다. 

javascript

Câu trả lời 3

3

jaenam

extendClass1는 최초 변수를 선언하고 값을 할당하는 시점에 이미 Bridge 함수가 생성되어 클로저로 기억됨에 따라, 이후에 클래스 상속이라는 동작을 수행하고자 할 때마다 '이미 생성된' Bridge 함수를 재활용함으로써 메모리 관리에 이점이 있습니다.

extendClass2는 엄밀히는 아직 클래스 상속 동작을 수행할 수 있는 단계는 아닙니다. 이를 한 번 실행한 결과를 다른 변수에 담았을 때 비로소 클래스 상속이 가능하겠네요.

예를 들어 var extendClass22 = extendClass2(); 라고 하면, 이제 extendClass22는 extendClass1과 동일한 방식으로 동작하게 될 것입니다.

extendClass3은 extendClass1에 대해 설명드린 걸과 정확히 반대의 방식으로 동작하게 됩니다.

즉 클래스상속을 하고자 할 때마다 매번 새로운 Bridge함수를 만들게 되므로 불필요한 메모리를 차지하게 될 것입니다.

0

michaelaeon5592

저도 1,2번 궁금해서 실행해봤는데, 설명해주신대로 해야 정상동작하더라구요. 이부분이 저도 조금 헷갈렸는데, 앞부분에서 설명해주신 함수표현식 강좌 다시보니 명확해 졌습니다.

감사합니다.

0

mhr

감사합니다!

인스턴스에서 prototype 프로퍼티에 직접 접근해야하는 이유

0

59

1

setTimeout 에서 this

0

81

1

2강부터 영상이 나오지 않습니다.

0

175

1

자바스크립트 주석에 이상한 점이 있어서 문의드립니다.

0

221

2

return 문 안에 여러 함수가 존재하는 것이 이해되지 않습니다.

1

259

1

클래스 static 멤버

1

253

1

실행컨텍스트와 스택프레임

2

567

1

프로토타입으로 상속할때 브릿지 사용 이유

0

320

1

호이스팅 관련 질문

1

335

1

책 66p. 예제 3-2 질문입니다.

0

356

1

강의 내용 10:58 캡슐화 질문입니다.

1

399

1

강의 내용 5:10 질문입니다.

1

422

2

전역 공간에서의 this

0

426

2

18:31 addEventListener의 this

1

480

1

outerEnvironmentReference 질문

1

372

1

실행 컨텍스트와 클로저에 대해 질문드립니다.

1

448

1

Object.prototype.constructor의 [[prototype]] ?

1

658

1

함수를 값으로 할당할 때

2

457

1

15:54 'ddd' 사라지는 오류?

4

375

1

프로토타입 getPrototypeOf(instance).constructor(n,a) 질문입니다.

1

405

1

기본형/가변형 질문입니당

0

333

0

선생님 그러면 섹션 0만 봐도 무방한가요!?

0

337

1

Hoisting과 environmentRecord에 관한 질문입니다.

1

292

1

안녕하세요, 데이터 변경 질문입니다.

0

329

1