본문 바로가기

programming study/JavaScript

(186)
18장 - 함수와 일급 객체 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 18.1 일급 객체 일급 객체의 조건 무명의 리터럴로 생성(런타임 생성) 가능 변수, 자료구조(객체, 배열)에 저장 가능 함수에 매개변수에 전달 가능 함수의 반환값으로 사용 가능 자바스크립트의 함수는 위 조건들을 만족하므로 일급객체 18.2 함수 객체의 프로퍼티 함수는 객체이므로 프로퍼티를 가짐 arguments, caller, length, name, prototype 18.2.1 arguments 프로퍼티 함수 호출 시에 전달된 인수들의 정보를 담고 있는 프로퍼티 인수를 프로퍼티 값으로 가지고 키는 순서를 나타냄 이터러블 유사 배열 객체 length 프로퍼티를 가진 객체 for문으로 순회할..
17장 - 생성자 함수에 의한 객체 생성(2) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 17.2 생성자 함수 17.2.4 내부 메서드 [[Call]]과 [[Construct]] 함수 또한 객체 일반 객체가 가지고 있는 내부 슬롯과 내부 메서드를 가지고 있음 일반 객체와 동일하게 동작 함수는 객체와 다르게 호출할 수 있음 함수만이 가지고 있는 내부 슬롯과 내부 메서드를 추가로 가짐 [[Enviroment]], [[FormalParameters]], [[Call]], [[Construct]] 일반 함수로서 호출 시 ,[[Call]] 메서드 실행 callable 모든 함수 객체는 반드시 Callable new 연산자화 함께 호출 시, [[Construct]]가 호출 constructo..
17장 - 생성자 함수에 의한 객체 생성(1) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 17.0 생성자 함수 객체 리터럴이 일반적이고 간단한 객체 생성 방식 이외 다양한 방법이 있음 생성자 함수를 사용하여 객체 생성 가능 17.1 Object 생성자 함수 new 연산자와 Object 생성자 함수를 같이 사용하여 생성 빈 객체 생성 반환 이후, 프로퍼티와 메서드 추가 JavaScript에서는 Object 생성자 함수 이외에 아래의 빌트인 생성자 함수 제공 String Number Boolean Function Array Date RegExp Promise const cat = new Object(); 17.2 생성자 함수 17.2.1 객체 리터럴에 의한 객체 생성 방식의 문제점 단..
16장 - 프로퍼티 어트리뷰트(3) 16장 - 프로퍼티 어트리뷰트(3) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 16.4 프로퍼티 정의 새로운 프로퍼티를 정의하면서 프로퍼티 어트리뷰트를 명시적으로 정의 또는 기존 프로퍼티의 프로퍼티 어트리뷰트를 재정의 16.4.1 Object.defineProperty 인수로 객체의 참조, 프로퍼티 키, 프로퍼티 디스크립터 객체 전달 접근자 프로퍼티도 정의 가능 프로퍼티 어트리뷰트에서 생략된 writable, enumerable, configurable은 false로 기본값 적용 Object,defineProperties를 사용하면 여러개의 프로퍼티 한 번에 정의 가능 const myPet = {}; ​ Object.defineProp..
16장 - 프로퍼티 어트리뷰트(2) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 16.3 데이터 프로퍼티와 접근자 프로퍼티 16.3.1 데이터 프로퍼티 키와 값으로 구성된 접근 가능한 일반적인 프로퍼티 데이터 프로퍼티의 프로퍼티 어트리뷰트 프로퍼티 초기화시 모두 true [[Value]] value 값 기존 값이 존재하면 재할당 값이 없으면 프로퍼티 동적 생성 [[Writable]] writable 값의 변경 가능 여부 불리언 false -> 읽기 전용 프로퍼티 [[Enumerable]] enumerable 프로퍼티의 열거 가능 여부 불리언 [[Configurable]] configurable 재정의 가능 여부 false -> 프로퍼티의 삭제, 프로퍼티 어트리뷰트 값 변경..
16장 - 프로퍼티 어트리뷰트(1) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 16.1 내부 슬롯과 내부 메서드 자바스크립트 엔진의 구현 알고리즘을 설명하기 위한 ECMAScript 사양에서 사용하는 의사 프로퍼티, 의사 메서드 이중 대괄호([[]]) 내부 로직으로 직접 접근 또는 호출 불가 일부는 제공하기도 함 [[Prototype]] 모든 객체가 가지는 내부 슬롯 예외적으로 __proto__를 통해 간접적으로 접근 가능 16.2 프로퍼티 어트리뷰트와 프로퍼티 디스크럽터 객체 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의 프로퍼티의 상태 프로퍼티의 값(value): [[Value]] 값의 갱신 가능 여부(writable): ..
15장 - let. cosnt 키워드와 블록 레벨 스코프 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 15.1 var 키워드로 선언한 변수의 문제점 변수 중복 선언 허용 같은 스코프 내에 중복 선언을 하용함 먼저 선언한 변수의 값이 변경될 수 있음 함수 레벨 스코프 코드 블록 내에서 선언 시, 전역 변수가 됨 의도치 않은 문제 발생 전역 변수의 중복 선언 발생 변수 호이스팅 호이스팅에 의해, 선언문 이전의 시점에서 참조 가능(undefined) 암묵적으로 선언 단계, 초기화 단계가 한 번에 진행 15.2 let 키워드 ES6 도입 변수 중복 선언 금지 SyntaxError 발생 블록 레벨 스코프 모든 코드 블록을 지역 스코프로 인정 변수 호이스팅 변수 선언문 이전에 참조하면 Refference..
14장 - 전역 변수의 문제점(2) 14장 - 전역 변수의 문제점(2) 본 내용은 모던 자바스크립트 Deep Dive - 자바스크립트의 기본 개념과 동작 원리를 토대로 작성하였습니다. 14.2 전역 변수의 문제점 14.2.1 암묵적 결합 모든 코드가 전역 변수를 참주하고 변경할 수 있게 되는 것 코드의 가독성은 나빠지고 상태가 변경되기 쉬워짐 14.2.2 긴 생명 주기 메모리 리소스를 오랜 기간 소비 의도하지 않은 재할당이 일어날 수 있음 14.2.3 스코프 체인 상에서 종점에 존재 전역 변수는 스코프 체인 상 가장 마지막애 존재 전역 변수를 찾기까지의 검색 시간이 걸리게 됨 14.2.4 네임스페이스 오염 자바스크립트에서는 파일이 분리되어 있어도 하나의 전역 스코프를 공유 파일 간의 변수 또는 함수가 겹치면 예기치 못한 문제 발생 14.3..