Web/JavaScript(36)
-
[JavaScript] 모던 자바스크립트 Deep Dive 19장 - 프로토타입
19.1 객체지향 프로그래밍 객체지향 프로그램이란 프로그램을 독립적인 객체의 집합으로 표현하려는 프로그래밍 패러다임을 말한다. 19.2 상속과 프로토타입 상속은 어떤 객체의 프로퍼티 또는 메서드를 다른 객체가 상속받아 그대로 사용할 수 있는 것을 말한다. 자바스크립트는 프로토타입을 기반으로 상속을 구현한다. function Circle(radius){ this.radius = radius; } // Circle 생성자 함수가 생성한 모든 인스턴스가 getArea 메서드를 // 공유해서 사용할 수 있도록 프로토타입에 추가한다. // 프로토타입은 Circle 생성자 함수의 prototype 프로퍼티에 바인딩되어 있다. Circle.prototype.getArea = function(){ return Math..
2022.07.28 -
[JavaScript] 모던 자바스크립트 Deep Dive 18장 - 함수와 일급 객체
18.1 일급 객체 일급 객체의 조건 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 자바스크립트의 함수는 일급객체 // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function(num){ return ++num; }; const decrease = function(num){ return --num; }; // 2. 함수는 객체에 저장할 수 있다. const auxs = {increase, decr..
2022.07.27 -
[JavaScript] 모던 자바스크립트 Deep Dive 17장 - 생성자 함수에 의한 객체 생성
17.1 Object 생성자 함수 new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다. // 빈 객체의 생성 const person = new Object(); // 프로퍼티 추가 person.name = 'Eo'; person.sayHello = function () { console.log('Hi! My name is ' + this.name); }; console.log(person); // { name: 'Eo', sayHello: [Function (anonymous)] } person.sayHello(); // Hi! My name is Eo 생성자 함수란 new연산자와 함께 호출..
2022.07.27 -
[JavaScript] 모던 자바스크립트 Deep Dive 16장 - 프로퍼티 어트리뷰트
16.1 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드이다. 16.2 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다. 프로퍼티 상태: 프로퍼티의 값, 값의 갱신 가능 여부, 열거 가능 여부, 재정의 가능 여부 프로퍼티 어트리뷰트: 자바스크립트 엔진이 관리하는 내부 상태 값인 내부 슬롯 [[value]], [[Writable]], [[Enumerable]], [[Configurable]] const person = { name: 'Eo' }; // 프로퍼티 어트리뷰트 정보를..
2022.07.25 -
[JavaScript] 모던 자바스크립트 Deep Dive 15장 - let, const 키워드와 블록 레벨 스코프
15.1 var 키워드로 선언한 변수의 문제점 15.1.1 변수 중복 선언 허용 var x = 1; var y = 1; // var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. // 초기화문이 있는 변수 선언문은 자바스크립트 엔진에 의해 var 키워드가 없는 것처럼 동작한다. var x = 100; // 초기화문이 없는 변수 선언문은 무시된다. var y; console.log(x); // 100 console.log(y); // 1 15.1.2 함수 레벨 스코프 var 키워드로 선언한 변수는 오로지 함수의 코드 블록만을 지역 스코프로 인정한다. var x = 1; if(true){ // x는 전역 변수. 이미 선언된 전역 변수 x가 있으므로 x 변수는 중복 선언된다. // 이는 의..
2022.07.20 -
[JavaScript] 모던 자바스크립트 Deep Dive 14장 - 전역 변수의 문제점
14.1 변수의 생명 주기 14.1.1 지역 변수의 생명 주기 지역 변수의 생명 주기 = 함수 호출되면 생성되고 종료시 소멸 var x = 'global'; function foo() { console.log(x); // undefined var x = 'local'; } foo(); console.log(x); // global undefined가 출력된 이유: 변수 할당문이 실행되기 이전까지는 undefined 값을 갖는다. 14.1.2 전역 변수의 생명 주기 전역 변수의 생명 주기 = 애플리케이션의 생명 주기 14.2 전역 변수의 문제점 1. 암묵적 결함: 모든 코드가 전역 변수를 참조하고 변경할 수 있도록 허용하는 것(가독성이 나빠지고 의도치 않게 상태 변경) 2. 긴 생명 주기: 메모리 리소스가..
2022.07.20