본문 바로가기

JavaScript44

[JS] ES6 함수의 추가 기능 📌 ES6 함수의 구분ES6 함수의 구분constructorprototypesuperarguments일반 함수 (Normal)OOXO메서드 (Method)XXOO화살표 함수 (Arrow)XXXX 📌 메서드ES6 사양에서 메서드는 메서드 축약 표현으로 정의된 함수만을 의미함ES6 메서드는 인스턴스를 생성할 수 없는 non-constructor이므로 prototype 프로퍼티가 없고 프로토타입도 생성하지 않음ES6 메서드는 자신을 바인딩한 객체를 가리키는 내부 슬롯 [[HomeObject]]를 가짐 (super 키워드 사용 가능)ES6 메서드는 본연의 기능(super)을 추가하고 의미적으로 맞지 않는 기능(constructor)은 제거함const obj = { x: 1, // foo는 메서드 f.. 2024. 7. 1.
[JS] 클래스 📌 클래스와 생성자 함수의 차이클래스생성자 함수new 연산자 없이 호출하면 에러 발생함new 연산자 없이 호출하면 일반 함수로서 호출됨상속을 지원하는 extends와 super 키워드 제공(상속 관계를 구현을 더 간결하고 명료하게 함)extends와 super 키워드 지원 X호이스팅이 발생하지 않는 것처럼 동작함함수 선언문으로 정의된 경우 함수 호이스팅,함수 표현식으로 정의된 경우 변수 호이스팅 발생암묵적으로 strict mode가 적용됨암묵적으로 strict mode 적용 Xconstructor, 프로토타입 메서드, 정적 메서드의프로퍼티 어트리뷰트 [[Enumable] 값이 모두 false임프로퍼티 어트리뷰트 [[Enumable] 값이 true임 📌 클래스  정의class 키워드를 사용해 정의함표현.. 2024. 6. 13.
[JS] 클로저 📌 렉시컬 스코프렉시컬 스코프: 함수를 어디에 정의했는지에 따라 상위 스코프를 결정하는 것함수의 상위 스코프를 함수를 정의한 위치에 의해 정적으로 결정되고 변하지 않음렉시컬 환경은 자신의 '외부 렉시컬 환경에 대한 참조'를 통해 상위 렉시컬 환경과 연결됨렉시컬 환경의 '외부 렉시컬 환경에 대한 참조'에 저장할 값, 즉 상위 스코프에 대한 참조는 함수 정의가 평가되는 시점에 함수가 정의된 환경(위치)에 의해 결정됨 📌 함수 객체의 내부 슬롯 [[Environment]]함수는 자신의 내부 슬롯 [[Environment]]에 자신이 정의된 환경(상위 스코프)의 참조를 저장함함수 객체는 자신이 존재하는 한 내부 슬롯 [[Environment]]에 저장한 렉시컬 환경의 참조(상위 스코프)를 기억함외부 렉시컬 .. 2024. 6. 2.
[JS] 실행 컨텍스트 📌 소스코드의 타입소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 내용이 다름전역 코드(global code):전역에 존재하는 소스코드전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 생성해야 함var 키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수를 전역 객체의 프로퍼티와 메서드로 바인딩하고 참조하기 위해 전역 객체와 연결돼야 함전역 코드가 평가되면 전역 실행 컨텍스트가 생성됨함수 코드(function code): 함수 내부에 존재하는 소스코드지역 스코프를 생성하고 지역 변수, 매개변수, arguments 객체를 관리해야 함생성한 지역 스코프를 전역 스코프에서 시작하는 스코프 체인의 일원으로 연결해야 함함수 코드가 평가되면 함수 실행 컨텍스트가 생성됨eval 코드(eval.. 2024. 5. 26.
[JS] this 📌 this 키워드this: 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있음자바스크립트의 this는 함수가 호출되는 방식에 따라 this에 바인딩될 값, 즉 this 바인딩이 함수 호출 방식에 의해 동적으로 결정됨레시컬 스코프는 함수 정의가 평가되어 함수 객체가 생성되는 시점에 상위 스코프를 결정하는 반면 this 바인딩은 함수 호출 시점에 결정됨 📌 함수 호출 방식과 this 바인딩1. 일반 함수 호출일반 함수로 호출하면 함수 내부의 this에는 전역 객체가 바인딩됨 (기본적으로 this에는 전역 객체가 바인딩됨)strict mode가 적용된 일반 함수 내부의 this에는 un.. 2024. 5. 14.
[JS] 빌트인 객체 📌 자바스크립트 객체의 분류표준 빌트인 객체ECMAScript 사양에 정의된 객체자바스크립트 실행 환경과 관계없이 언제나 사용할 수 있음전역 객체의 프로퍼티로서 제공되기 때문에 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있음호스트 객체ECMAScript 사양에 정의되에 있지 않지만 자바스크립트 실행 환경에서 추가로 제공하는 객체브라우저 환경 -> 호스트 객체로 클라이언트 사이드 Web API 제공Node.js 환경 -> Node.js 고유의 API를 호스트 객체로 제공함사용자 정의 객체기본 제공 객체가 아닌 사용자가 직접 정의한 객체 📌 표준 빌트인 객체자바스크립트는 Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map.. 2024. 5. 12.