목록스터디 (75)
seunghyun Note
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/PmfA7/btsC4rfFd7V/64nnLfYLslVfbWFBWM5C0K/img.png)
1.자바스크립트 객체의 분류 표준 빌트인 객체(Standard built-in objects) 표준 빌트인 객체는 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다. Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map/Set, WeakMap, WeakSet, Function, Promise, Reflect, Proxy, JSON, Error등 40여개 객체를 제공한다. 호스트 객체(host objects) 호스트 객체는 ECMAScript 사양에 정의되어 있지 않지만 자바스크립트 실행 환경(브라우저 환경 또는 Node.js환경)에서 추가로 제공하는 객체를 말한다. 브라우저 환경에서는 DO..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cHtFK4/btsC34ZkLPe/RmPJ1NaZkrlKKlxH7IvSZ1/img.png)
1. Strict mode란 자바스크립트 언어의 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대한 명시적인 에러를 발생시킨다. function foo() { x = 10; } foo(); console.log(x); // ? 위 예제를 실행하면 결과는 10이 출력된다. x = 10 코드를 만나면 자바스크립트 엔진은 foo함수 스코프에서 x식별자를 검색한다. foo함수 스코프에 없으면 스코프 체인을 통해 상위 스코프에서 x 변수를 검색한다. 즉, 전역 스코프에서 검색하는데, 전역 스코프에 없으면 RefferenceError가 발생해야 하는데 자바스크립트 엔진은 암묵적으로 전역 객체에 x프로퍼티를 동적으로 생성한다. 이를 암묵..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bIrKiO/btsDd1lVn8S/VWwAcvdBBUpsAanJ1AunrK/img.png)
자바스크립트는 멀티 패러다임 프로그래밍 언어 클래스(class) ES6에서 클래스가 도입되었다. 클래스도 함수이며, 기존 프로토타입 기반 패턴의 문법적 설탕(syntatic sugar)이라고 볼 수 있다. 1. 객체 지향 프로그래밍 객체지향 프로그래밍은 프로그램을 명렁어 또는 함수의 목록으로 보는 전통적인 명령형 프로그래밍(imperative programming)의 절차지향적 관점에서 벗어나, 여러개의 독립적 단위인 객체(object)의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 말한다. 추상화 // 이름과 주소 속성을 갖는 객체 const person = { name: 'Lee', address: 'Seoul' }; console.log(person); // {n..
18.1 일급 객체 일급 객체의 조건 무명 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다. 변수나 자료구조(객체, 배열)등에 저장할 수 있다. 함수의 매개변수에 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. // 1. 함수는 무명의 리터럴로 생성할 수 있다. // 2. 함수는 변수에 저장할 수 있다. // 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다. const increase = function (num) { return ++num; }; const decrease = function (num) { return --num; }; // 2. 함수는 객체에 저장할 수 있다. const auxs = { increase, decrease }; // 3. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/XMo10/btsC5XyxI2i/yIPK238cKKc0HzebLp1bS0/img.png)
17.1 Object 생성자 함수 new연산자와 함께 Object생성자 함수를 호출하면 빈 객체를 생성하여 반환 // 빈 객체의 생성 const person = new Object(); // 프로퍼티 추가 person.name = 'Lee'; person.sayHello = function () { console.log('Hi! My name is ' + this.name); }; console.log(person); // {name: "Lee", sayHello: ƒ} person.sayHello(); // Hi! My name is Lee 생성자 함수(constructor) new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수. 생성자 함수에 의해 생성된 객체를 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/H5O1z/btsC4HiphPT/aw9hHXJffAGjOWWE9wDXpk/img.png)
16.1 내부 슬롯과 내부 메서드 내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티(pseudo property)와 의사 메서드(pseudo method)다. 모든 객체는 [[Prototype]] 이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부로직이므로 원칙적으로 직접 접근할 수 없지만 [[Prototype]] 내부 슬롯의 경우, __proto__ 를 통해 간접적으로 접근 가능하다. const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught SyntaxError: Unexpected token '['..