Frontend36 this (모던 자바스크립트 Deep Dive) 22.1 this 키워드 생성자 함수를 선언할 때, 인스턴스가 만들어지기도 전에 어떻게 인스턴스를 가리켜야할까? 자신이 속한 객체 또는 생성자 함수가 생성할 인스턴스를 가리키는 자기 참조 변수 그렇기 때문에 자신이 속한 객체 또는 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. 엔진에 의해 암묵적으로 생성된다. 함수 호출 방식에 따라 동적으로 결정된다. this는 키워드이지만 식별자 역할을 하며 this가 가리킬 객체를 바인딩한다. this는 어디서든 참조가 가능하다. 📎 this의 장소 의미 전역 window 일반 함수 window 객체의 메서드 호출한 객체 생성자 함수 인스턴스 일반 함수 (strict mode) undefined 22.2 함수 호출 방식과 this 바인딩 함수 호출 방식에 따라 th.. 2024. 4. 16. 빌트인 객체 (모던 자바스크립트 Deep Dive) 21.1 자바스크립트 객체의 분류 표준 빌트인 객체 ECMAScript 사양에 정의된 객체 전역 객체의 프로퍼티 호스트 객체 실행 환경에 따라 추가로 제공되는 객체 브라우저 또는 Node.js 사용자 정의 객체 21.2 표준 빌트인 객체 모두 인스턴스를 생성할 수 있는 생성자 함수 객체 프로토타입 메서드와 정적 메서드 제공 Math, Reflect, JSON 제외 얘네는 정적 메서드만 제공 21.3 원시값과 래퍼 객체 원시값은 객체가 아니지만 객체처럼 동작한다. 엔진에서 암묵적으로 연관된 객체를 생성하여 해당 프로퍼티에 접근/호출 후 원시값으로 되돌린다. 사용된 임시 객체는 가비지 콜렉터가 주서간다. 엔진에 의해 임시로 객체가 되는 친구들을 래퍼 객체라고 부른다. Symbol()은 생성자 함수가 아니므로.. 2024. 4. 16. strict mode (모던 자바스크립트 Deep Dive) 20.1 strict mode란? 키워드로 변수 선언을 하지 않으면 암묵적 전역이 일어나고 해당 변수를 참조하면 에러가 발생하지 않는다. ES5부터 지원 언어의 문법을 더욱더 엄격하게 적용시킨다. strict mode보다 ESLint를 선호 strict mode + 코딩 컨벤션 20.2 strict mode의 적용 전역의 선두, 함수 몸체의 선두 ‘use strict’; 추가 20.3 전역에 strict mode를 적용하는 것은 피하자 스크립트 단위로 실행된다. 다른 스크립트에는 영향을 주지 않는다. 즉시 실행 함수로 스코프를 구분하고 strict mode 적용 20.4 함수 단위로 strict mode를 적용하는 것도 피하자 번거롭다. 중첩 함수의 경우 또 번거로워진다. 20.5 strict mode가.. 2024. 4. 16. 프로토타입 (모던 자바스크립트 Deep Dive) 클래스, 상속, 캡슐화를 위한 키워드가 없어서 객체 지향 언어가 아니다? (public, private, protected 등) 프로토타입 기반의 객체 지향 프로그래밍이다! 19.1 객체지향 프로그래밍 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임 클래스, 상속, 캡슐화를 위한 키워드가 없어서 객체 지향 언어가 아니다? (public, private, protected 등) 프로토타입 기반의 객체 지향 프로그래밍이다! 19.1 객체지향 프로그래밍 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임 어떤 사물이나 개념을 인식하는 철학적 사고를 프로그래밍에 접목하여 그 실체는 속성을 가지고 있다고 말한다. 추상화? 다양한 실체의 속성 중 필요한 것만 표현하는 것 객체 속성을 통해 여러 개의 .. 2024. 4. 16. let, const 키워드와 블록 레벨 스코프 (모던 자바스크립트 Deep Dive) 15.1 var 키워드로 선언한 변수의 문제점 15.1.1 변수 중복 선언 허용 var 키워드를 사용하면 중복 선언이 가능하다! 단, 초기화를 위한 할당을 하지 않으면 적용되지 않는다. 15.1.2 함수 레벨 스코프 함수의 코드 블록만 지역 스코프로 인정한다. if, for 등 함수가 아닌 스코프는 스코프로 인정하지 않는다. 15.1.3 변수 호이스팅 할당을 하기 전까지는 undifined로 초기화되고, 할당 후 값이 적용된다. var 을 이용해 아래에 선언해 놓아도 호이스팅을 통해 에러가 나지 않는다. 15.2 let 키워드 15.2.1 변수 중복 선언 금지 이미 선언된 변수를 중복 선언시 에러가 발생한다. 15.2.2 블록 레벨 스코프 모든 코드 블록을 스코프로 인정한다. 지역 변수의 범위가 var .. 2024. 4. 16. 전역 변수의 문제점 (모던 자바스크립트 Deep Dive) 14.1 변수의 생명 주기 14.1.1 지역 변수의 생명 주기 변수에도 생명 주기가 있다. 없으면 메모리 공간을 계속 점유한다. 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다. 지역 변수의 생명 주기는 함수의 생명 주기와 일치한다. (스코프 내부에서만 사용 가능) 지역 변수가 함수보다 오래 생존하는 경우도 있다. 누군가가 해당 메모리 공간을 참조하고 있으면 메모리 공간이 해제되지 않는다. 스코프 또한 다른 곳에서 참조 중이면 소멸하지 않는다. var x = 'global'; function foo() { // 함수가 실행되며 x가 undifined로 초기화됨 console.log(x); // undifined var x = 'local'; } foo(); consol.. 2024. 4. 16. 이전 1 2 3 4 5 6 다음 728x90 반응형