• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

생성자 함수관련...

21.10.11 22:48 작성 조회수 119

2

강의에서 정정해주시면 좋을것같아 의견드려요.
var myFoo1 = Food('파스타') 처럼 new 키워드를 제거하는 경우 Food는 생성자의 기능이 아닌 함수로 작동하게됩니다. 즉 함수 Food는 리턴하는 키워드가 존재하지 않으므로 undefined를 반환하게 되고, 이것은 this와는 전혀 상관없다고 생각합니다. es5코드로 작성하셨으니 es5기준으로 동작을 말씀드리자면...
1. Food함수가 실행 시 좌측에 별다른 식별자가 존재하지 않으므로 Food함수 내부의 this는 window객체를 가르킨다.(use strict 사용시 null 출력)
2. 아래 코드는 다음과 같다.
this.name = name; window.name = name;
this.smell = function() {...}; window.smell = function() {...}
3. Food 함수내에 반환하는것이 없으므로 undefined를 반환..
var myFood1 = Food('블라블라');
myFood1. 으로 접근 시 에러 발생.. 즉 이것은 this가 name or smell이 존재하지 않아서 발생하서가 아닌 undefined로부터 name or smell을 접근하려고 하니 발생하는 에러라고 생각합니다.
 
혹시 제가 틀린부분이나 영상에서 제가 잘못오이해한부분이 있다면 피드백 감사하겠습니다.

답변 1

답변을 작성해보세요.

0

아이고 역시 날카롭게 지적해주셨군요... 맞습니다. 다른 학생분도 지적해주셨던 내용인데요... return 없는 함수이기 때문에 undefined를 반환하니 this 랑은 전혀 상관이 없게 되는게 맞습니다..;;

빨리 재촬영 해야한다고 생각했는데 자꾸 늦어졌군요 ㅠㅠ  좋은 지적 감사합니다!