본문 바로가기

분류 전체보기61

22. this this 키워드 생성자 함수는 인스턴스를 생성하는데 목적이 있다. 생성자 함수 내부에 정의한 메서드는 인스턴스의 메서드가 된다. 그런데 생각해 볼 점은, 생성자 함수를 정의하는 시점에는 인스턴스가 아직 생성되지 않았다. 따라서 메서드에서 인스턴스의 프로퍼티에 접근할 필요가 있을때, 아직 생성되기 전인 인스턴스를 참조할 수 있는 식별자가 필요하다. 이를 위해 자바스크립트는 this라는 특수한 식별자를 제공한다. this는 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수다. this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조할 수 있다. 함수를 호출하면 arguments 객체와 this가 암묵적으로 함수 내부에 전달된다. this는 지역 변수처.. 2022. 7. 18.
21. 빌트인 객체 객체의 분류 표준 빌트인 객체: ECMAScript 사양에 정의된 객체로, 애플리케이션 전역의 공통 기능을 제공한다. 자바스크립트 실행 환경에 상관없이 언제나 사용할 수 있다. 표준 빌트인 객체는 전역 객체의 프로퍼티로 제공된다. 따라서 별도의 선언 없이 전역 변수처럼 참조할 수 있다. 호스트 객체: 자바스크립트 실행 환경(Node.js, 브라우저)에서 제공하는 객체이다. 브라우저 환경에서는 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker와 같은 클라이언트 사이드 Web API를 제공한다. Node.js 환경에서는 Node.js 고유의 API를 호스트 객체로 제.. 2022. 7. 18.
19. 프로토타입 프로토타입은 자바스크립트가 객체지향 프로그래밍을 지원하는 방식이다. 자바스크립트는 프로토타입 기반 객체지향 언어로 프로토타입을 통해 객체지향 프로그래밍을 가능하게 한다. 객체지향 프로그래밍 객체지향 프로그래밍은 프로그램을 명령어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍의 절차지향적 관점에서 벗어나 여러 개의 독립적 단위, 즉 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 말한다. 객체지향 프로그래밍은 실세계의 실체(사물이나 개념)를 인식하는 사고를 프로그래밍에 접목하려는 시도에서 시작한다. 실체는 특징이나 성질을 나타내는 속성을 가지고 있고, 이를 통해 실체를 인식하거나 구별할 수 있다. 예를 들어, 사람은 이름, 주소, 성별, 나이, 신장, 체중, 학력, 성격 등 다양한 속성을.. 2022. 7. 14.
18. 함수와 일급 객체 일급 객체 다음 조건을 만족하는 객체를 일급 객체라 한다. 무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열 등)에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 자바스크립트의 함수는 조건을 모두 만족하므로 일급 객체다. 함수가 일급 객체라는 것은 함수를 객체와 동일하게 사용할 수 있다는 의미다. 객체는 값이므로 함수는 값과 동일하게 취급할 수 있다. 따라서 함수는 값을 사용할 수 있는 곳(변수 할당문, 객체의 프로퍼티 값, 배열의 요소, 함수 호출의 인수, 함수 반환문)이라면 어디서든지 리터럴로 정의할 수 있으며 런타임에 함수 객체로 평가된다. 일급 객체로서 함수가 가지는 가장 큰 특징은 일반 객체와 같이 함수의 매.. 2022. 7. 12.
17. 생성자 함수에 의한 객체 생성 Object 생성자 함수 생성자 함수란 new 연산자와 함께 호출하여 객체를 생성하는 함수를 말한다. 빌트인 생성자 함수에 해당하는 Object 생성자 함수를 new 연산자와 함께 호출하면 빈 객체를 생성하여 반환한다. 생성자 함수 생성자 함수에 의한 객체 생성 생성자 함수는 객체를 생성하는 함수다. 생성된 객체는 인스턴스라 한다. 클래스 기반 언어와 달리 프로토타입 기반 객체지향 언어인 자바스크립트에는 생성자 함수의 형식이 따로 정해져 있지 않다. 일반 함수와 동일한 방법으로 생성자 함수를 정의하고 new 연산자와 함께 호출하면 해당 함수는 생성자 함수로 동작한다. 만약 new 연산자 없이 생성자 함수를 호출하면 일반 함수로 동작한다. 생성자 함수를 이용하면 생성할 객체의 프로퍼티나 메서드를 정의하여 .. 2022. 7. 12.
16. 프로퍼티 어트리뷰트 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다. ECMAScript 사양에 등장하는 이중 대괄호로 감싼 이름들이 내부 슬롯과 내부 메서드다. 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로는 직접 접근 또는 호출할 수 없다. 단, 일부 내부 슬롯과 메서드에 한해 간접적으로 접근할 수 있는 수단을 제공한다. 예를 들어, 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖고, __proto__를 통해 간접 접근할 수 있도록 접근자를 제공한다. 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는.. 2022. 7. 10.