22,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨코어 자바스크립트
클래스 static 멤버
안녕하세요!클래스 static 멤버 관련해서 질문드립니다.이전 프로토타입 강의에서 객체의 프로토타입에는 모든 데이터 타입에 적용될 수 있기 때문에 객체 전용 메서드를 정의할 수 없어서 예외적으로 객체 생성자 함수에 정의하였다는 것은 이해했습니다. 그런데, 배열의 경우는 왜 프로토타입에 메서드를 정의하고 배열 생성자 함수에 static methods와 static properties를 정의한건지 궁금합니다!항상 좋은 강의 감사드립니다!
- 해결됨코어 자바스크립트
실행컨텍스트와 스택프레임
안녕하세요, 선생님. 강의 정말 잘 들고 있습니다..! 몇가지 궁금한 점이 생겼는데요.실행컨텍스트는 작동방식이고 그걸 구체적으로 표현한 객체가 스택프레임이라고 생각하면 될까요? 아니면 같은 개념인데 표현이 다른 걸까요? 콜스택을 간접적으로나마 확인할 수 있는 방법이 있을까요? 좋은 수업 정말 감사드립니다!!
- 해결됨코어 자바스크립트
프로토타입으로 상속할때 브릿지 사용 이유
마지막 강의 뒷쪽에서 프로토타입으로 상속할 경우 브릿지 함수를 만들어서 구현하셨는데,'이름없음'이 왜 뜬다는건지 이해하지 못하여 질문드립니다.화살표를 따라가면 결국 같은 결과인데 왜 브릿지함수를 사용하지 않으면, '이름없음' 뜬다는지 이해하지 못했습니다. 답변해주시면 감사하겠습니다.
- 해결됨코어 자바스크립트
호이스팅 관련 질문
안녕하세요! 정말 좋은 강의 잘 들었습니다. 실행 컨텍스트 강의에서 설명 해주신 호이스팅 관련하여 질문드립니다.environmentRecord에서 정보 수집 과정을 쉽게 이해하기 위해 만든 허구의 개념이라 설명하시면서 동시에 "현재 문맥의 식별자 수집하는데 호이스팅이라는 개념과 일치하다." 라고 설명하셨는데 제가 느끼기엔 '달걀이 먼저인지 닭이 먼저이지' 처럼 헷갈려서 질문드립니다.environmentRecord에서 정보 수집 과정을 쉽게 이해하기 위해서 hosting이라는 개념이 생긴건지 , 아니면 hosting이라는 것은 식별자 정보를 실행 컨텍스트 맨 위로 끌어올리는 개념이고 이것이 문맥의 environmentRecord에서 정보 수집하는 과정과 동일하다고 하는 것일까요..스코프체인은 외부식별자 정보를 참조하기 위해서 스코프체인이라는 개념이 생겼다라고 딱 이해가 가는데, 호이스팅은 윗 부분이 이해가 가지 않아서 질문드려요!답변 주시면 감사드립니다!
- 해결됨코어 자바스크립트
책 66p. 예제 3-2 질문입니다.
예제 3-2 전역 공간에서의 this(Node.js 환경)실행 결과에 대한 질문입니다.console.log(this); console.log(global); console.log(this === global); 3번째 줄에 실행결과가 false가 나왔습니다.책에서는 true의 결과가 실행된다고 표시되었는데 버전이 바뀌어서 결과가 바뀐 건지 혹은 실행환경의 문제인지 질문합니다.
- 해결됨코어 자바스크립트
강의 내용 10:58 캡슐화 질문입니다.
_logged와 _name 모두 캡술화_logged만 캡슐화둘 중에 어떤 것이 맞는지 궁금합니다. 캡슐화를 찾아보니객체의 속성과 메서드를 함께 묶는 것일부 데이터에 대해 직접 액세스 제한하는 것이런 말들이 나오는데 _name은 _status처럼 login, logout과 같은 메서드와 묶지 않았으니 캡슐화가 아닌지, 그럼에도 직접 접근은 안되니 캡슐화가 맞는지 궁금증이 생겨 질문합니다!
- 해결됨코어 자바스크립트
강의 내용 5:10 질문입니다.
outer 실행 컨텍스트의 outerEnvironmentReference에 관한 질문입니다.제 생각에는 outerEnvironmentReference는 외부 참조에 관한 객체이니 본인인 outer: f가 아닌 outer2: undefiend가 들어가야 한다고 생각했습니다. outer: f 가 들어가는 이유가 궁금합니다!!
- 해결됨코어 자바스크립트
전역 공간에서의 this
안녕하세요! 강의를 들으면서 정리하다가 질문이 생겨 글 올립니다. temp.jsvar a = 3; console.log(this); 위와 같이 코드를 작성하고 실행시켜 보면사진과 같이 빈 객체가 나옵니다. 관련해서 다른 글들을 찾아보니, 노드에서는 전역 환경의 this만 global이 아니라 module.exports를 가리킨다 라는 글이 있었습니다. 왜 위와 같은 결과가 나오는지, 실제로 전역 환경의 this는 module.exports를 가리키는 건지 질문 드립니다!
- 해결됨코어 자바스크립트
18:31 addEventListener의 this
안녕하세요.element.addEventListener 의 경우에는 this를 따로 지정한게 아니라 element의 메소드라서 this가 해당 element를 지칭한게 아닌가요? 앞선 설명에서는 메서드로 함수를 호출하면 호출한 주체가 this가 된다고 설명하셨는데 이경우에는 this를 따로 지정 했다고 하셔서 헷갈려서요
- 해결됨코어 자바스크립트
outerEnvironmentReference 질문
안녕하세요. 책에서 OuterEnvironmentReference는 현재 함수가 선언될 당시의 외부 LexicalEnvironment를 참조한다고 하였는데 이는 VariableEnvironment와 같은디 궁금합니다.그리고 LexicalEnvironment의 environmentRcord는 선언된 식별자를 포함해 let과 const 등까지 포함하는지 궁금합니다..또 ThisBinding이 variableEnvironment나 LexicalEnvironment의 environmentRecord에 속해 있는 게 아니라 따로 떨어져있는게 맞는지가 궁금합니다
- 해결됨코어 자바스크립트
실행 컨텍스트와 클로저에 대해 질문드립니다.
안녕하세요클로저에 대해 명확한 이해가 되지 않아서 질문 드립니다. 전역, outer, inner 함수가 있다고 가정할 때, outer 함수가 실행되면, outer의 LexicalEnviroment이 생길것이고,그 내부에는 enviromentRecord와 outerEnviromentRef 가 생길 것입니다. enviromentRecord에는 inner 함수도 포함이 될 것이고,inner 함수는 outer 함수 내부에서 선언되었으므로,inner 함수의 [[Enviroment]] 슬롯은 outer 컨텍스트의 LexicalEnviroment를 참조할 것입니다. 따라서 outer컨텍스트가 종료 되어도 inner함수의 [[Enviroment]] 슬롯이outer 컨텍스트의 LexicalEnviroment를 참조하고 있기 때문에 GC 의 대상이 되지않고,(outer컨텍스트가 없어진 후에) inner 컨텍스트가 생성되어도정상적으로 inner의 outerEnviromentRef가 outer의 LexicalEnviroment를 참조할 수 있을 것입니다. outer LexcialEnviroment는 enviromentRecord와 outerEnviromentRef를 참조하고 있으므로,이 두 객체는 없어지지 않아야 할 것 같은데,강의 5:15 에서 outer의 enviromentRecord와 outerEnviromentRef는 a:1 을 제외하고모두 제거 되고 있습니다. 제 생각에는 참조의 과정을 따라가면 객체 내부의 프로퍼티가 남는게 아니라객체(enviromentRecord나 outerEnviromentRef 그 자체) 가 남아야 할 것 같은데,저렇게 일부를 제외하고 다 지워지는 이유가 있을까요? a와 inner 는 outer enviromentRecord에서 참조하고 있고,enviromentRecord와 outerEnviromentRef는 LexcialEnviroment에 의해 참조되며 LexcialEnviroment는 다시 inner 함수의 [[Enviroment]] 또는inner 컨텍스트의 outerEnviromentRef에 의해 참조 되고 있으므로,다 살아남아야 하는 것이 아닌가 생각됩니다.
- 해결됨코어 자바스크립트
Object.prototype.constructor의 [[prototype]] ?
강의에서 설명해 주신객체(인스턴스) 와, 그것의 생성자 함수, 그리고 객체의 프로토타입 이 3가지의 구조에 대해서는 이해했습니다. 그렇게 되면, 어떤 객체를 프로토타입 체인을 타고 올라가도결국 Object.prototype 에 도달하게 되는 것이고,Object.prototype 또한 constructor를 가지고 있을 것입니다. 그렇다면 그 constructor는 함수이므로,Function.prototype 을 상속 받을 것이고,Fuction.prototype의 constructor는역시 함수이므로 Function.prototype을 상속 받게 됩니다. 크롬 개발자 도구에서 객체를 선언하고 console.dir로 타고타고 올라가면 결국 저 Object.prototype.constructor 가 나오는 시점부터 무한하게 트리를 타고 올라가게 되는데[[prototype]] > constructor > [[prototype]] > constructor > [[prototype]] .... 제가 보기엔 재귀참조형태 같아보이는데 이것이 맞는지 궁금하여 질문 드립니다. 그렇게 되면 Function.prototype.constuctor === Function()Function().[[prototype]] === Function.prototypeFunction.prototype.[[prototype]] === Object.prototypeObject.prototype.constructor === Object()Object().[[prototype]] === Function.prototype 형태가 되어버리는데 이게 맞는 지 궁금합니다..무언갈 놓치고 있는 것인지? 아니면 최상위 Object 객체에선 다르게 동작하는 규칙이 있는 것인지 궁금합니다.
- 해결됨코어 자바스크립트
함수를 값으로 할당할 때
자바스크립트에서 함수는 표현식으로 변수에 할당할 수 있어서값으로 평가 될 수 있다고 알고 있습니다. 강의에서 배열이나 객체에 대한 예시를 설명해 주셔서 이해를 했는데, 문득 함수의 경우는 어떻게 이루어지는지 궁금해 졌습니다. const outerFunc = function (){ let b = 1; let c = 2; const innerFunc = function(){ console.log("inner function") } }예를들어 위와같이 있다고 할 때, 초기화 단계에서 outerFunc 변수가 생성되고 undefined로 초기화 된 후에,리터럴로 선언된 함수가 그 자체로 들어있다가, 함수 호출 시에 (실행시에) 컨텍스트를 생성하며 함수 내부에 선언한 변수들이 생성, 주소 할당 등의 과정이 이루어지는지,아니면 변수나 객체가 생성되는 것과 마찬가지로 내부에 있는 b, c 변수들이 메모리에 할당되고 주소값을 참조하는 과정까지 이루어 진 후, outerFunc 변수에 함수객체의 주소를 가리키도록 생성되는지위 두가지 중 어떻게 동작하는지가 혼동됩니다..
- 해결됨코어 자바스크립트
15:54 'ddd' 사라지는 오류?
강의 15:53 경에,5004 메모리에 'ddd'를 할당한 후 없어지는데강의 자료 제작 중 실수인 것 같습니다.제 생각에는 'ddd'도 String 타입으로, 원시값이니까변경되는 것이 아니라 'ddd'를 그대로 둔채 5005번 메모리에변경될 값들이 이어서 들어가야 할 것 같습니다.
- 해결됨코어 자바스크립트
프로토타입 getPrototypeOf(instance).constructor(n,a) 질문입니다.
프로토타입 동영상 7:07에 나오는function Person(n,a){ this.name = n; this.age = a; } var roy = new Person('로이',30); var royClone1 = new roy.__proto__.constructor('로이클론1',10); var royClone2 = new roy.constructor('로이클론2',25); var royClone3 = new Object.getPrototypeOf(roy).constructor('로이클론3',25); var royClone4 = new Person.prototype.constructor('로이클론4',15);여기서 Object.getPrototypeOf(roy) 이 줄이 실행이 안됩니다,Uncaught TypeError: Object.getPrototypeOf is not a constructor이렇게 나오는데 MDN에 찾아봐도 답을 모르겟어요
- 미해결코어 자바스크립트
기본형/가변형 질문입니당
그럼 기본형도 값을 저장할때처음엔 주소를 가리킨후, 실질적인 값은 힙에 있는걸 가져오는건가요?[ 예시 ]var a = 10 // 기본형 주소 : 1002데이터 : a/@5002 주소 : 5002데이터 : 10 이게 맞는건가용?
- 해결됨코어 자바스크립트
선생님 그러면 섹션 0만 봐도 무방한가요!?
섹션1과 섹션2는 참고만 해달라고 되어있기도 하고 내용이 겹치는 부분이 있어서요!
- 해결됨코어 자바스크립트
Hoisting과 environmentRecord에 관한 질문입니다.
이전에 호이스팅을배웠을때는 선언부를 맨위로 끌어올려서 코드를 실행시키는 개념이라고 배웠거든요.강사님이 작성하신 책과 강의의 내용으로 정리를 해보면,자바 스크립트 엔진이 소스 코드의 environmentRecord를 수집. 코드를 실행하기전에는 해당 환경의 코드 식별자들을 전부 알고있는 상황.이 때, 자바스크립트 엔진은 실행컨텍스트 실행 시, 모든 식별자 정보를 알기때문에, 실행하는 소스코드 상 아래에 있는 실행컨텍스트가 실행이 가능하다. 이때, 식별자 정보는 실제로 실행컨텍스트 맨위로 끌어올려지지않지만, Hoisting이 발생한다.이렇게 이해를 해도 괜찮을까요? 처음부터 실행 컨텍스트를 잡고 호이스팅을 다시 이해하려니 두서없이 정리가 된거같은데, 한번만 봐주시면 감사하겠습니다.
- 해결됨코어 자바스크립트
안녕하세요, 데이터 변경 질문입니다.
데이터를 변경시에 기존 주솟값(5004)에 있는 데이터를 변경하는것이 아닌 새로운 주솟값(5005)에 변경하고자 하는 값을 별개의 문자열로 지정하는 것은 이해를 했습니다. 그 다음에 헷갈리는것이 새로운 주소값은 변수 영역에서 a 라는 식별자를 가진 주소값을 찾아서 변수영역에 지정되어있는 값을 새로 할당한 주솟값으로 변경 한다고 이해를 하면 될까요??
- 해결됨코어 자바스크립트
선생님 class 상속파트에서 궁금한게 있습니다.
우선 좋은 강의 들을 수 있어서 너무 감사합니다 .^^질문드릴게 있는데 Employee, Person 상속과정에서 빈 Bridge 함수를 만들어서 Person.prototype을 Bridge.prototype에 넣고 Employee.prototype에 인스턴스로 만들어주라고 하셨는데 그렇게 하지 않고 그냥 Person의 prototype을 Employee의 prototype에 덮어쓰면 안되는지(Employee.prototype = Person.prototype; ) 실행해 본 결과 Bridge를 사용한것과 동일하게 구현되는데 이렇게 하면 차후에 문제가 생길 수 있나요??