본문 바로가기

JavaScript

(98)
[Deep dive] 23장 실행 컨텍스트 23.1 소스코드의 타입 - 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리내용이 다름 1) 전역 코드 - 전역 실행 컨텍스트 생성 - 전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 생성 - var 키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수를 전역 객체의 프로퍼티와 메서드로 바인딩하고 참조하기 위해 전역 객체와 연결 2) 함수 코드 - 함수 실행 컨텍스트 생성 - 지역 스코프를 생성하고 지역 변수, 매개 변수 , arguments 객체를 관리 - 생성한 지역 스코프를 전역 스코프에서 시작하는 스코프 체인의 일원으로 연결 3) eval 코드 - eval 실행 컨텍스트 생성 - strct mode(엄격 모드)에서 자신만의 독자적인 스코프 생성 4) 모듈 코드 - 모..
[Deep dive] 22장 this 22.1 this 키워드 this - 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수 (self-referencing variable) - this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있음 - this는 코드 어디에서든 참조 가능 this 바인딩 - this와 this가 가리킬 객체를 바인딩 (식별자와 값을 연결) 22.2 함수 호출 방식과 this 바인딩 - this 바인딩은 함수가 호출되는 방식에 따라 this 바인딩이 동적으로 결정 함수 호출 방식 this 바인딩 일반 함수 호출 전역 객체 메서드 호출 메서드를 호출한 객체 생성자 함수 호출 생성자 함수가 (미래에)생성할 인스턴스 Function.prototype.apply/..
[Deep dive] 21장 빌트인 객체 21.1 자바스크립트 객체의 분류 1) 표준 빌트인 객체 (standard built-in objects) - ECMAScript 사양에 정의된 객체 - 애플리케이션 전역의 공통 기능 제공 - 자바스크립트 실행 환경과 관계없이 언제나 사용 가능 - 표준 빌트인 객체는 전역 객체의 프로퍼티로서 제공 2) 호스트 객체 (host object) - ECMAScript 사양에 정의되어 있지 않지만 자바스크립트 실행환경(브라우저, Node.js)에서 추가로 제공되는 객체 - 브라우저 환경에서는 클라이언트 사이드 web API를 호스트 객체로 제공 - Node.js 환경에서는 Node.js 고유의 API를 호스트 객체로 제공 3) 사용자 정의 객체 (user-defined objects) - 사용자가 직접 정의한 ..
[Deep dive] 20장 strict mode 20.1 strict mode란? 암묵적 전역(implicit global) - foo 함수 내에서 선언하지 않은 변수에 10을 할당 - 자바스크립트 엔진은 x 변수가 어디서 선언되었는지 스코프 체인을 통해 검색 - 전역 스코프에도 x변수의 선언이 존재하지 않기 때문에 자바스크립트 엔진은 암묵적으로 전역객체에 x 프로퍼티를 동적 생성 - 전역 객체의 x 프로퍼티는 마치 전역 변수처럼 사용 가능 function foo() { x = 10; } foo(); console.log(x); //10 strict mode ( 엄격 모드) - 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립테 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러 발생시킴 ..
[Deep dive] 19장 프로토타입 (3) 19.12 정적 프로퍼티/메서드 정적 프로퍼티/메서드 (static) - 생성자 함수로 인스턴스를 생성하지 않아도 참조/호출할 수 있는 프로퍼티/메서드 - 생성자 함수 객체가 소유한 프로퍼티/메서드 - 생성자 함수가 생성한 인스턴스로 참조/호출할 수 없다 - 생성자 함수가 생성한 인스턴스는 자신의 프로토타입 체인에 속한 객체의 프로퍼티/메서드에 접근할 수 있다 - 정적 프로퍼티/메서드는 인스턴스의 프로토타입 체인에 속한 객체의 프로퍼티/메서드가 아니므로 인스턴스에 접근 불가 //생성자 함수 function Person(name) { this.name = name; } //프로토타입 메서드 Person.prototype.sayHello = function() { console.log(`Hi! My name..
[Deep dive] 19장 프로토타입(2) 19.6 객체 생성 방식과 프로토타입의 결정 - 프로토타입은 추상연산 OrdinarayObjectCreate에 전달되는 인수에의해 결정 19.6.1 객체 리터럴에 의해 생성된 객체의 프로토타입 - 겍체 리터럴 내부에 프로퍼티 추가 - 자바스크립트 엔진은 객체 리터럴을 평가하여 객체를 생성할 떄 추상 연산 OrdinaryObjectCreat를 호출 - 객체 리터럴에 의해 생성되는 객체의 프로토타입은 Object.prototype이며 Object.prototype을 상속받음 const obj = {x:1}; //객체 리터럴에 의해 생성된 obj 객체는 Object.prototype을 상속받음 console.log(obj.constructor === Object); //true console.log(obj.h..
[Deep dive] 19장 프로토타입 (1) 19.1 객체지향 프로그래밍 - 객체(object)의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임 - 객체의 상태를 나타내는 데이터와 상태 데이터를 조작할 수 있는 동작을 하나의 논리적인 단위로 묶어서 생각하는 것 - 각 객체는 자신의 고유한 기능을 수행하면서 다른 객체와의 관계성(relationship)을 가질 수 있다. - 프로퍼티(property) : 객체의 상태 데이터 - 메서드 (method) : 객체의 동작 추상화(abstraction) - 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 표현 ex) "이름"과 "주소"라는 속성을 갖는 person 객체 //이름과 주소 속성을 갖는 객체 const person = { name : 'Lee', address : 'Seoul' }; con..
[Deep dive] 18장 함수와 일급객체 18.1 일급 객체 일급 객체 조건 1) 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다 2) 변수나 자료구조(객체,배열 등)에 저장할 수 있다. 3) 함수의 매개변수에 전달할 수 있다. 4) 함수의 반환값으로 사용할 수 있다. - 자바스크립트의 함수는 조건을 만족하므로 일급 객체이다. 1) 함수의 매개변수에 전달 가능 2) 함수의 반환값으로 사용 가능 3) 함수 객체는 호출 가능 4) 일반 객체에는 없는 함수 고유의 프로퍼티 소유 //1.함수는 무명의 리터럴로 생성할 수 있다. //2. 함수는 변수에 저장할 수 있다. //런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당한다. const increase = function (num) { return ++num..