Promise Promise 객체는 두 개의 내부 프로퍼티를 갖는다.
state : 진행 상태. pending(보류) / fulfilled(이행) / rejected(거부) / settled(완료)로 나뉨. result : 결과. 진행 중 revolve(value)를 만나면 value로, reject(error)를 만나면 error로 바뀜. 활용 const promise = (props) => { return new Promise((revolve, reject) => { // Do something... if () {revolve(result)} reject(error) }) } // 프로미스 체이닝 promise(props).then((result) => { // Do something... return result }).then((result) => { // Do something.
More
클래스 자바스크립트에서의 클래스는 함수의 한 종류로, 생성자의 기능을 대체하여 상속을 보다 간결하게 작성할 수 있음.
별도의 문법을 사용하여 메소드 또는 프로퍼티 등을 선언할 수 있음.
단, 단순한 편의 문법이 아닌 다음과 같은 차이점을 가진다.
반드시 new와 함께 사용해야 함. 클래스의 메서드는 열거할 수 없음. 즉, for...in을 통한 순회 시 메서드는 제외됨. 항상 엄격 모드(use strict)로 실행됨. 기본 문법 class User { //클래스 필드 isHuman = true; //생성자 constructor(name, age) { this.
More
이터레이션 프로토콜 이터레이션 프로토콜(iteration protocol)은 데이터 컬렉션을 순회하기 위한 규칙.
이를 준수한 객체는 for...of로 순회 가능하고 Spread 문법의 피연산자가 될 수 있다.
이터러블 이터러블 프로토콜을 준수한 객체를 이터러블이라 하며, Symbol.iterator 메소드를 구현하거나 상속한 객체를 말한다.
배열은 이터러블이며, 일반 객체는 아니다.
const array = [1,2,3]; alert(Symbol.iterator in array); //true const obj = {a:1, b:2, c:3}; alert(Symbol.iterator in obj); //false ES6에서 제공하는 빌트인 이터러블은 다음과 같다.
Array, String, Map, Set, TypedArray(Int8Array, Uint8Array, Uint8ClampedArray, Int16Array, Uint16Array,
Int32Array, Uint32Array, Float32Array, Float64Array), DOM data structure(NodeList, HTMLCollection), Arguments
이터레이터 이터레이터 프로토콜은 next 메서드를 가지고 있어야 하며, next 메서드는 반복이 끝났는지에 대한 done 프로퍼티와 이터레이터로부터 반환되는 값인 value 프로퍼티를 갖는 객체를 반환해야 한다.
More
생성자 함수 일반적으로 객체 리터럴 {...}을 통해 객체를 생성하지만, 유사한 객체를 여러 개 생성해야 할 때 new 연산자와 생성자 함수를 사용.
생성자 함수의 선언은 일반 함수와 큰 차이가 없지만 두 가지 관례를 따름.
함수 이름의 첫 글자는 대문자로 시작. 반드시 new연산자를 붙여 실행. function User(name, sex, age) { this.name = name; this.sex = sex; this.age = age; this.isAdmin = false; } let user = new User('John', 'M', '21'); alert(user.
More
객체 프로퍼티 객체의 프로퍼티는 두 가지로 분류된다.
데이터 프로퍼티 : 키와 값으로 분류된 일반적인 프로퍼티. 접근자 프로퍼티 : 자체적으로 값을 가지지 않고, 다른 데이터 프로퍼티의 값에 접근할 때 호출되는 접근자 함수(set, get)으로 구성된 프로퍼티 데이터 프로퍼티 데이터 프로퍼티는 값(value)과 함께 특별한 세 가지의 속성(플래그, flag)을 가짐.
writable : 값 수정 enumerable : 반복을 통한 나열 configurable : 프로퍼티 삭제 또는 플래그 수정 일반적인 선언(지금까지 하던 객체 프로퍼티 선언)으로는 기본값인 true로 설정됨.
More
객체 선언 const obj = new Object() const obj = {} 두 방법에 큰 차이는 없으나 객체 리터럴 방법(2번째)이 가독성과 성능 등의 이유로 권장됨
프로퍼티 생성 const person = { name: 'kim', age: 25, } // 선언 시 입력 person.bloodtype = 'A' // 동적 선언 프로퍼티의 값으로는 어떤 자료형이든 가능
const person ={ name: 'kim', age: 25, live: true, friends: ['song', 'ho', 'kang'], say: function(word) { alert(`${this.name}: ${word}`) } } 프로퍼티 접근 const person = { name: 'kim', age: 25, } person.
More
이항 연산자 연산자 설명 예시 + 덧셈 연산자 2 + 3 - 뺄셈 연산자 7 - 2 * 곱셈 연산자 5 * 1 / 나눗셈 연산자 35 / 7 % 나머지 연산자 41 % 6 ** 제곱 연산자 3 ** 2 단항 연산자 연산자 설명 예시 + 단항 덧셈 연산자 +2
More