본문 바로가기

전체 글30

[JavaScript] 생성자 함수에 의한 객체 생성 생성자 함수에 의한 객체 생성 모던 자바스크립트 Deep Dive 17장을 들으며 정리한다. 생성자 함수(constructor)를 이용한 객체 생성 const fruit = new Object(); new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성해서 반환한다. 그 이후 property나 method를 추가해서 객체를 완성할 수 있다. Object 생성자 함수 외에도 String, Number, Boolean, Function, Array, Date 등의 Built-in 생성자 함수를 제공한다. String 생성자 함수를 사용하면 String 객체가 형성된다. 책에서는 Object 생성자 함수를 사용해서 객체를 만드는 건 특별한 이유가 없을 때는 유용하지 않다고 지적한다. 왜일까?.. 2022. 2. 12.
[JavaScript] Property Attribute (프로퍼티 어트리뷰트) 모던 자바스크립트 Deep Dive 16장을 읽으며 정리한다. property attribute value (값) writable (갱신 가능 여부) enumerable (열거 가능 여부) configurable (재정의 가능 여부) 자바스크립트 엔진은 property를 생성할 때 property의 상태를 나타내는 것들을 property attribute를 기본값으로 자동 정의. 상태란 위 네 가지를 뜻함. property attribute는 meta-property인 내부 슬롯이다. 직접 접근 불가능, 간접 접근 가능 const fruit = { name : 'pear' }; fruit.age = 10; console.log(Object.getOwnPropertyDescriptors(fruit)); /.. 2022. 2. 8.
[JavaScript] var 대신 let/const를 사용하자(ES6) 예전에 노마드코더 강의에서, var 쓰지말라고 했다. 쉽게 얘기하자면 var은 목적이 불분명해서 훨씬 명확하게 읽을 수 있는 let/const 로 분류하자는 말이었다. → let는 재할당이 필요한 경우 → const는 재할당이 필요없는 경우 나는 명백히 var에 단점이 있다고 생각한다. 모던 자바스크립트 Deep Dive 15장을 읽으며 몰랐던 개념에 대해 정리하겠다. 일시적 사각지대(Temporal Dead Zone, TDZ) 스코피의 시작 지점부터 초기화 시작 지점까지 변수를 참조할 수 없는 구간이다. 나는 var가 맨 끝에 갖다놔도 hoisting이 되므로 let도 동일하게 동작할 것이라 생각했다. 그러나! var은 선언 단계와 초기화 단계가 한번에 진행된다. 하지만 let로 선언하면 두 단계가 분.. 2022. 2. 7.
[JavaScript] Global variables (전역 변수) 모던 자바스크립트 Deep Dive 14장을 읽으며 정리한다. 내게는 좋지 않은 버릇이 하나 있다. 코딩하다 함수에서 값을 다른 함수로 전달하는 과정이 어려우면 가끔 전역 변수를 선언하고 그걸로 문제를 처리한다. 과연 좋은 걸까? 전역 변수의 문제점은 다음과 같다. 암묵적 결합(implicit coupling) : 모든 코드가 전역 변수를 참조하고 변경 가능 긴 생명 주기 스코프 체인 상에서 종점에 존재 : 검색 속도가 가장 느리다 네임스페이스 오염 : 자바스크립트는 파일이 분리되어 있어도 하나의 전역 스코프를 공유한다. 그렇다면 어떤 방식으로 전역 변수 사용을 억제할 수 있을까? 변수의 스코프는 좁을수록 좋다. 나처럼 무분별한 전역 변수 사용은 자제해야 한다. 즉시 실행 함수 : 모든 코드를 즉시 실행.. 2022. 2. 6.