본문 바로가기

Note/JavaScript43

ES6 함수의 추가 기능 함수의 구분 § ES6 이전 함수 : 일반함수 + 생성자 함수 모두 사용 가능. ES6 이전 모든 함수는 callable이며 constructor이다. § ES6 이후의 함수 constructor prototype super arguments 일반 함수 O O X O 메서드 X X O O 화살표 함수 X X X X 메서드(ES6) ES6 이상의 사양에서는 메서드 축약 표현을 사용한 함수만 메서드로 인정한다. ES6 이상에서의 메서드는 non-constructor이다. 프로토타입을 생성하지 않는다. 자신을 바인딩한 객체를 가리키는 내부 슬롯 [[HomeObject]]를 갖는다. [[HomeObject]]를 갖는 ES6 메서드는 super 키워드를 사용할 수 있다. const obj = { x: 1, foo.. 2024. 3. 19.
클래스 클래스 ※ 클래스와 생성자 함수의 차이점 클래스 생성자 함수 new 연산자 미사용 시 에러 일반 함수 extends/super 키워드 제공 O X 호이스팅 X(없는 것 처럼 보임) O 암묵적 strict mode O X Enumerable false true 클래스 정의 클래스 선언문 class Person {} 익명 클래스 표현식 const Person = class {}; 기명 클래스 표현식 const Person = class MyClass {}; 클래스는 일급객체이다. 일급객체는 값처럼 사용할 수 있다. 또한, 클래스 내에는 메서드를 정의할 수 있는데 각각 constructor, 프로토타입, 정적 메서드 총 세 가지가 있다. class Person { constructor(name) { // 생성.. 2024. 2. 18.
클로저 렉시컬 스코프(정적 스코프) : 함수 호출 위치에 따르지 않고 함수 정의를 어디에서 했는지에 따라 상위 스코프를 결정하게 되는 것. 함수 객체 내부 슬롯 [[Environment]] : 함수는 내부 슬롯 [[Environment]]에 자신이 정의된 환경인 상위 스코프의 참조를 저장한다. 이는 곧, 함수 자신이 존재한다면 내부 슬롯에 의해 상위 스코프를 기억한다. const a = 1; function first() { const a = 10; second(); } function second() { console.log(a); } first(); // 1 second(); // 1 위의 예시를 보아도 결국 함수는 정의가 된 위치(평가된 시점)에 따라 스코프가 결정된다. 클로저와 렉시컬 환경 클로저 : 외.. 2024. 2. 18.
실행 컨텍스트 실행 컨텍스트 : JS엔진에서 코드가 실행될 때 생성되는 환경을 의미하며, 코드를 실행하기 위한 정보를 담은 객체이다. 소스코드 타입 : 모든 소스코드는 평가가 된 후에 실행 컨텍스트가 생성된다. 전역 코드 : 전역 변수와 같이 말그대로 전역에 존재하는 소스코드이다. 스코프 레벨은 최상위이다. 함수 코드 : 함수 내에 존재하는 소스코드이다. 함수 내에 중첩 함수 혹은 클래스와 같은 내부 코드는 제외다. 스코프는 지역 스코프이다. eval 코드 : strict mode에서 독자적인 스코프를 생성한다. 모듈 코드 : 모듈별로 독립적인 스코프를 생성한다. 평가와 실행 : JS엔진에 의해 모든 소스코드는 평가와 실행. 2가지 과정이 존재한다. § 과정 소스코드 평가 : 변수 및 함수의 선언문을 먼저 실행한다. .. 2024. 2. 18.
This this : 자기 참조 변수로서, 현재 자신이 속한 객체나 인스턴스의 프로퍼티, 메서드 등을 참조할 수 있다. this는 JS엔진에 의해 암묵적으로 생성된다. function person(name) { // 생성자 함수 this.name = name; // this - 생성할 인스턴스를 가리킨다 } const people = { // 객체 리터럴 name: 'Jang', getFirstName() { return this.name + 'Soso'; // this - 메서드를 호출한 객체를 가리킨다. } }; 이는 곧, 호출 방식에 따라 this 바인딩이 동적으로 결정이 된다. this 동적 바인딩 일반 함수 호출 : 전역 객체가 this에 바인딩 된다. function foo() { console.log.. 2024. 2. 16.
빌트인 객체 객체 분류 표준 빌트인 객체 : 웹, Node 상관없이 모두 사용할 수 있는 객체이다. 호스트 객체 : 각 환경에 맞게 추가 지원하는 객체들이다. 웹 : DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Componenet, Web Sorker 등 Node : Node.js 의 고유 API 사용자 정의 객체 : 기본으로 지원하는 객체가 아닌 사용자가 직접 정의한 객체이다. 표준 빌트인 객체 인스턴스 생성 불가 객체 : Math, Reflect, JSON 인스턴스 생성 가능 객체 : Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array 등.. 2024. 2. 13.
반응형