본문 바로가기
[모던 자바스크립트 Deep Dive] #19. 프로토타입★ ▣ 19장: 프로토타입 자바스크립트는 클래스 기반 객체지형 프로그래밍 언어보다 효율적이며 더 강력한 객체지향 프로그래밍 능력을 지니고 있는 프로토타입 기반의 객체지향 프로그래밍 언어. 자바스크립트를 이루고 있는 거의 "모든 것"이 객체임. 19.1 객체지향 프로그래밍 객체 지향 프로그래밍 : 절차지향적 관점에서 벗어나 여러 개의 독립적 단위(객체)의 집합으로 프로그램을 표현. 속성 : 실체가 가지는 특징이나 성질. 추상화 : 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것. 객체 : 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조, 상태 데이터와 동작을 하나의 논리적인 단위로 묶은 복합적인 자료구조. 19.2 상속과 프로토타입 상속 : 어떤 객체의 프로퍼티 또는 .. 2022. 3. 15.
[모던 자바스크립트 Deep Dive] #18. 함수와 일급객체 ▣ 18장: 함수와 일급 객체 18.1 일급 객체 일급 객체의 조건 : 1) 무명의 리터럴로 생성 가능(런타임에 생성 가능) 2) 변수나 자료구조(객체, 배열 등)에 저장 가능 3) 함수나 매개변수에 전달 가능 4) 함수의 반환값으로 사용 가능 자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체임. -> 함수는 값(객체)과 동일하게 취급할 수 있음. -> 함수는 값을 사용할 수 있는 곳이라면 어디서든지 리터럴로 정의할 수 있으며 런타임에 함수 객체로 평가됨. // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num).. 2022. 3. 14.
[모던 자바스크립트 Deep Dive] #16~17. 프로퍼티 어트리뷰트, 생성자 함수에 의한 객체 생성 ▣ 16장: 프로퍼티 어트리뷰트 16.1 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드 : 이중 대괄호([[ ... ]])로 감싼 이름들. 직접적 접근이나 호출 불가능. 16.2 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 프로퍼티 : 객체 내부의 속성을 의미. (프로퍼티란?) 프로퍼티 상태 : 프로퍼티 값, 값의 갱신가능 여부, 열거 가능 여부, 재정의 가능 여부 프로퍼티 어트리뷰트 : 내부슬롯 [[Value]], [[Writable]], [[Enumerable]], [[Configurable]]. Object.getOwnPropertyDescriptor 메서드로 간접확인 가능. Object.getOwnPropertyDescriptor 메서드 : 프로퍼티 디스크립터 객체 반환. 자바스크립트 엔진은.. 2022. 3. 12.
[모던 자바스크립트 Deep Dive] #14~15. 전역변수의 문제점, let/const와 블록 레벨 스코프 ▣ 14장: 전역 변수의 문제점 14.1 변수의 생명 주기 ____14.1.1 지역 변수의 생명 주기 지역 변수의 생명 주기는 함수의 생명 주기와 일치함. ____14.1.2 전역 변수의 생명 주기 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치함. 14.2 전역 변수의 문제점 암묵적 결합 : 코드 어디서든 참조하고 변경 가능, 가독성 나빠짐, 의도치 않은 상태 변경 위험. 긴 생명 주기 : 메모리 리소스 오랜 기간 소비, 변수 상태 변경 시간 길고 기회 많음 -> 오류 확률 큼. 스코프 체인 상에서 종점에 존재 : 전역 변수가 가장 마지막에 검색됨(검색 속도 가장 느림). 네임스페이스 오염 : 파일 분리되어도 하나의 전역 스코프 공유, 다른 파일 동일 이름 변수나 함수 -> 오류. 14.3 전역.. 2022. 3. 10.
[모던 자바스크립트 Deep Dive] #23,13. 실행컨텍스트★, 스코프 ▣ 23장: 실행 컨텍스트 23.1 소스코드의 타입 소스코드(전역, 함수, eval, 모듈) -> 평가 -> 실행 컨텍스트 생성 23.2 소스코드의 평가와 실행 소스코드 평가(변수 선언문 실행) -> 실행 컨텍스트 생성 -> 소스코드 실행(변수 할당문 실행) -> 실행 컨텍스트에 결과 반영 23.3 실행 컨텍스트의 역할 실행 컨텍스트는 소스코드를 실행하는 데 필요한 환경을 제공하고 코드의 실행 결과를 실제로 관리하는 영역임. 식별자(변수, 함수, 클래스 등의 이름)를 등록하고 관리하는 스코프와 코드 실행 순서 관리를 구현한 내부 메커니즘. 모든 코드는 실행 컨텍스트를 통해 실행되고 관리됨. 식별자와 스코프는 실행 컨텍스트의 렉시컬 환경으로 관리하고 코드 실행 순서는 실행 컨텍스트 스택으로 관리함. 23... 2022. 3. 8.
[모던 자바스크립트 Deep Dive] #12. 함수★ ▣ 12장: 함수 12.1 함수란? 함수 : 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 function add(x, y) { return x + y; } add(2, 5); 12.2 함수를 사용하는 이유 코드 재사용, 유지보수의 편의성 높임, 코드의 신뢰성 높임, 코드의 가독성 향상 12.3 함수 리터럴 자바스크립트의 함수는 객체 타입의 값임. 함수도 함수 리터럴로 생성 가능. 함수 리터럴은 함수 이름 생략 가능. // 변수에 함수 리터럴을 할당 var f = function add(x, y) { // f : 식별자, add : 함수 이름 return x + y; }; console.log(f(2,5)); // 식별자로 함수 호출! 12.4 함수.. 2022. 3. 6.