목록js (66)
seunghyun Note
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/tZTgO/btsC8QrXMce/yCV1gIajtBqMXhluJ14Fqk/img.png)
1. this 키워드 객체는 상태(state)를 나타내는 프로퍼티와 동작(behavior)를 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조다. 동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 하는데, 이때 this를 사용한다. const circle = { // 프로퍼티: 객체 고유의 상태 데이터 radius: 5, // 메서드: 상태 데이터를 참조하고 조작하는 동작 getDiameter() { // 이 메서드가 자신이 속한 객체의 프로퍼티나 다른 메서드를 참조하려면 // 자신이 속한 객체인 circle을 참조할 수 있어야 한다. return 2 * circle.radius;..
![](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 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수. 생성자 함수에 의해 생성된 객체를 ..