본문 바로가기

Frontend/JavaScript47

10. 객체를 만들어내는 생성자 함수 객체를 생성하는 방식 객체 리터럴 : 단 하나의 객체만 생성 → 동일한 프로퍼티를 갖는 객체를 여러 개 생성해야 하는 경우 비효율적. Object 생성자 함수 : new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 생성자 함수에 의한 객체 생성 방식의 장점 : 객체(인스턴스)를 생성하기 위한 템플릿(클래스)처럼 생성자 함수를 사용하여 프로퍼티 구조가 동일한 객체 여러 개를 간편하게 생성할 수 있다. 생성자 함수 내부의 this 는 생성자 함수가 생성할 인스턴스를 가리킨다. this 는 객체 자신의 프로퍼티나 메서드를 참조하기 위한 자기 참조 변수다. this 가 가리키는 값, 즉 this 바인딩은 함수 호출 방식에 따라 동적으로 결정된다. 일반 함수로서 호출 : thi.. 2023. 12. 8.
9. 프로퍼티 어트리뷰트 모든 객체는 [[prototype]]이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 원칙적으로는 접근할 수 없지만 _ _ proto _ _ 를 통해 간접적으로 접근할 수 있다. 프로퍼티 프로퍼티는 데이터 프로퍼티와 접근자 프로퍼티로 구분할 수 있다. 데이터 프로퍼티 : 키와 값으로 구성된 일반적인 프로퍼티다. 프로퍼티가 생성될 때 value의 값은 프로퍼티 값으로 초기화되며 다른 프로퍼티 어트리뷰트의 값은 true로 초기화된다. value writable : 값의 변경 가능 여부. enumerable configurable : 삭제, 변경 가능(재정의) 여부. 이 값이 false인 경우더라도 writable 이 true 인 경우 value의 변경과 writable을 false.. 2023. 12. 8.
8. 전역 객체와 전역 변수 전역 객체 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체. 브라우저에서는 window, 서버 사이드 환경에서는 global 객체. 전역 객체는 표준 빌트인 객체와 환경에 따른 호스트 객체, 그리고 var 키워드로 선언한 전역 변수와 전역 함수를 프로퍼티로 갖는다. var 키워드로 선언한 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치한다. 변수의 생명주기 전역 변수의 생명 주기 애플리케이션의 생명 주기와 일치 변수의 생명 주기는 메모리 공간이 확보된 시점부터 메모리 공간이 해제되어 가용 메모리 풀에 반환되는 시점까지다. 지역 변수의 생명 주기 함수가 호출되면 생성되고 함수가 종료하면 소멸한다. (함수의 생명 주기와 일치) 지역 변수는 함수가 호출되.. 2023. 12. 8.
7. let, const 로 선언한 변수 let 과 const 키워드로 선언한 변수 let 키워드 변수 중복 선언 금지 일시적 사각 지대 : let 키워드로 선언한 변수는 선언 단계와 초기화 단계가 분리되어 진행된다. 즉, 런타임 이전에 자바스크립트 엔진에 의해 암묵적으로 선언 단계가 먼저 실행되지만 초기화 단계는 변수 선언문에 도달했을 때 실행된다. 스코프의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간을 일시적 사각지대라고 한다. let 키워드로 선언한 전역 변수는 전역 객체의 프로퍼티가 아닌다. let 전역 변수는 보이지 않는 개념적인 블록(전역 렉시컬 환경의 선언적 환경 레코드) 내에 존재하게 된다. const 키워드 const 키워드로 선언한 변수는 반드시 선언과 동시에 초기화해야 한다. const 키워드로 선언된 변.. 2023. 12. 8.
6. 자바스크립트의 스코프 스코프 스코프 = 유효범위 식별자가 유효한 범위 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙 식별자 결정 : 이름이 같은 두 개의 변수 중 어떤 변수를 참조해야 할 것인지를 결정. 네임스페이스로, 스코프를 통해 변수 이름의 충돌을 방지한다. 호이스팅은 스코프를 단위로 동작한다. 모든 지역 스코프의 최상위 스코프는 전역 스코프다. 스코프 체인은 물리적인 실체로 존재한다. 자바스크립트 엔진은 렉시컬 환경을 실제로 생성한다. 전역 렉시컬 환경은 코드가 로드되면 곧바로 생성되고 함수의 렉시컬 환경은 함수가 호출되면 곧바로 생성된다. 자바스크립트 엔진은 스코프 체인을 따라 변수를 참조하는 코드의 스코프에서 시작해서 상위 스코프로 이동하며 선언된 변수를 검색한다. 상위 스코프에서 유효한 변수는 하위 스코프.. 2023. 12. 8.
5. 객체와 함수 객체 원시 값을 제외한 나머지값(함수, 배열, 정규 표현식)은 모두 객체. 원시 타입의 값은 변경 불가능하지만 객체 타입의 값은 변경 가능하다. 자바스크립트의 함수는 일급 객체이므로 값으로 취급할 수 있다. 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라고 부른다. 객체는 객체의 상태를 나타내는 값(프로퍼티)과 프로퍼티를 참조하고 동작할 수 있는 동작(메서드)을 모두 포함할 수 있기 때문에 상태와 동작을 하나의 단위로 구조화할 수 있어 유용하다. 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 객체지향 프로그래밍(OOP)이라고 한다. 자바스크립트는 프로토타입 기반 객체지향 언어. 리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용하여 값을 생성하는 표기법. 객체 리.. 2023. 11. 30.