목록전체 글 (119)
우당탕탕 개발일기
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/eg4d0K/btsH2H38hx6/h72Y7mL4rJZ6rh13gw72ak/img.png)
ES6 이전의 함수는 일반 함수로도 호출할 수 있고, 생성자 함수로서 호출할 수도 있고, 메소드로 호출할 수도 있었다.다시 말해 ES6 이전의 모든 함수는 callable이면서 constructor이다. 즉, 사용 목적을 구분하지 않고 사용되었다.하지만 이는 실수를 유발할 수 있고 성능면에서도 손해이다. 따라서 ES6부터는 함수를 사용 목적에 따라 1.일반함수 2.메소드 3.화살표함수 세 가지 종류로 구분하기 시작했다.일반 함수는 함수 선언문이나 함수 표현식으로 정의한 함수를 말하며, 이는 ES6 이전과 차이가 없다.하지만 메소드와 화살표 함수는 ES6 이전과 명확한 차이가 있어서 비교하여 살펴 볼 필요가 있다.ES6 함수의 구분constructorprototypesuperarguments일반 함수OOX..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/5dfkO/btsHOBEcmFg/aipVG9baufn4oHxR81wTM1/img.png)
MDN에서는 클로저를 “함수와 그 함수가 선언된 렉시컬 환경과의 조합”이라고 정의하고 있다. “함수가 선언된 렉시컬 환경”이 클로저를 이해하기 위한 핵심 키워드이므로 먼저 알아봐야한다. 렉시컬 스코프자바스크립트 엔진은 함수를 어디에 정의했는지에 따라 상위 스코프를 결정한다. 이를 렉시컬 스코프(정적 스코프)라고 한다.실행 컨텍스트 파트에서 공부했듯 ‘스코프’란 실행 컨텍스트의 렉시컬 환경이다.이 렉시컬 환경은 자신의 “외부 렉시컬 환경에 대한 참조”를 통해 상위 렉시컬 환경과 연결된다.이 원리로 이루어지는 것이 바로 스코프 체인인 것. 따라서 함수의 상위 스코프를 결정한다는 것은 렉시컬 환경의 외부 렉시컬 환경에 대한 참조에 저장할 참조값을 결정한다는 것과 같다.렉시컬 환경의 외부 렉시컬 환경에 대한 참..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cjtdpN/btsHubTmvN5/kkUK6gbHtBekWdbG1fTOB0/img.png)
면접 대비 질문 리스트를 뽑을 때마다 꼬옥 나오는 this.. 봐도봐도 모르겠던 this를 이번 기회에 아주 조져보겠다.01. this란const circle = { radius: 5, getDiameter() { return 2 * circle.radius; }};console.log(circle.getDiameter()); // 10 (ⓐ) getDiameter 메소드 내에서는 메소드 자신이 속해있는 객체 circle을 참조하고 있다.getDiameter 메소드가 호출되는 시점(ⓐ)에는 이미 객체 리터럴의 평가가 완료되어 객체가 생성되었고 circle이라는 식별자에 생성된 객체가 할당된 이후이다. 따라서 getDiameter 메소드 내부에서 circle 식별자를 참조할 수는 있..
보호되어 있는 글입니다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cemzVI/btsG7B4NYWW/pVpA5dmFANnB2DFnKD9XEk/img.png)
1. 프로퍼티 어트리뷰트란??프로퍼티의 값(value), 값의 갱신 가능 여부(writable), 열거 가능 여부(enumerable), 재정의 가능 여부(configurable)와 같은 프로퍼티의 상태. 자바스크립트 엔진은 프로퍼티를 생성할 때 이 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다. 1) Object.getOwnPropertyDescriptor인수로 참조와 프로퍼티 키 값을 넘겨주면 해당 프로퍼티(1개)의 프로퍼티 어트리뷰트를 프로퍼티 디스크립터 객체로 반환한다.트프로퍼티 어트리뷰트에 직접 접근할 순 없지만, Object.getOwnPropertyDescriptor메소드를 통해 간접적으로 접근이 가능하다. 단, ES8부터 도입된 Object.getOwnPropertyDescriptors ..