Promise() 프로미스 = 성공/실패 판정기계! -3가지 상태- 성공실패 판정전 성공 후엔 실패 후엔 var 프로미스 = new Promise(); 프로미스.then(function(){ }).catch(function(){ }); // 콜백함수와 다르게 '실패시 특정 코드를 실행해주세요~' 가능함 1. Promise기계 안에는 아무거나 다 집어넣을 수 있습니다 var 프로미스 = new Promise(function(성공,실패){ var 어려운연산 = 1+1; 성공(); }); 프로미스.then(function(){ console.log('연산이 성공했습니다') }).catch(function(){ console.log('연산이 실패했습니다') }); //참고로, 연산결과같은걸 then안에서 활용하..
자바스크립트는 동기적처리가 베이스다 그런데, 상황에 따라서는 비동기적처리를 한다 순차적으로 가다가 오래걸리는 코드는 일단 치워두고, 쉬운 코드 먼저 실행한다음, 그제서야 실행한다 // 1 // 3 //(1초뒤) 2 함수를 순차적으로 실행하고 싶다면? 콜백함수를 사용한다 즉, 함수 안에 함수를 넣는다 → 참고로, 콜백함수는 비동기,동기라고 나누지 말자. 그냥 순차적으로 출력하는, 함수디자인 패턴일뿐... 콜백함수의 문제점첫째함수(function(){ 둘째함수(function(){ 셋째함수(function(){ 넷째함수(function(){ }); }); }); }); 겹겹이 쌓여서 보기싫음 해결방법은 프로미스!첫째함수().then(function(){ }).then(function(){ }).then(fu..
문제 src 디렉토리 안에는 클래스가 존재합니다. constructor, super, extends, class 키워드를 이용하여 구현합니다. 상속과 관련된 키워드 super, extends는 공식문서를 읽어본 후 적용해봅니다. 풀이 먼저 Grub 을 완성한뒤, Bee, HoneMakerBee,ForagerBee 순서대로 완성하면 됩니다. class Grub { // TODO.. constructor(){ // class는 항상 constructor()를 포함한다 this.age = 0; this.color = `pink`; this.food = `jelly`; } eat(){ return `Mmmmmmmmm jelly` // 콘솔이 아니라 리턴을 써야 했다 } } module.exports = Grub..
'__proto__' 앞서, 보았던 prototype(부모유전자)는 함수 뒤에만 쓸 수 있습니다. 속성이나 배열 같은 다른 객체에게는 쓸 수 없습니다. 하지만, '__proto__'는 모든 객체가 가지고 있는 속성이기 때문에 함수가 아닌 일반객체에서도 부모와의 상속관계를 표현할 수 있습니다. 즉 '__proto__'는 모든 객체에서 부모의 유전자를 검사할때 쓰는 속성입니다. function 기계(){ this.name = 'Kim'; this.age = 15; } var 학생1 = new 기계(); console.log(학생1.__proto__); === console.log(기계.prototype); 자식.__proto__ 는 부모. prototype을 의미한다. '__proto__'를 등록한다면? '..
Prototype이란? 자바스크립트에는 constructor(객체 찍어내는 기계)말고도 상속을 해주는 장치가 하나 더 있다! 바로 prototype 이다. 기계를 만들면, 우리가 모르게 prototype 이라는 게 생성된다. function 기계(){ this.name = 'Kim'; this.age = 15; } var 학생1 = new 기계(); var 학생2 = new 기계(); console.log(기계.prototype); '기계.prototype' 은 기계의 부모유전자입니다. 기계.prototype 에 변수나 함수가 들어있다면 기계로부터 생성되는 오브젝트(자식)들은 모두 그것들을 물려받아 쓸 수 있습니다. function 기계(){ this.name = 'Kim'; this.age = 15; ..
OOP 란? 객체 지향 프로그래밍 (Object Oriented Programming)을 뜻한다. OOP의 모든 것은 '객체'로 그룹화된다. 특히, OPP는 4가지 개념을 가지고 있어 재사용성이 좋다. OOP 4가지 개념 캡슐화(Encapsulation) 속성과 메소드를 따로 정의하지 않고, 하나의 객체 안에서 느슨하게 묶는다 은닉(구현은 숨기고, 동작은 노출시킴) 과 느슨한 결합(언제든 수정가능)에 유리하다 추상화(Abstraction) 전화기의 회로도가 눈에 보이지 않지만, 누구나 전화기를 쉽게 사용할 수 있다 너무 많은 기능이 노출되지 않게 하여 사용 상의 혼란을 없앤다 상속(Inheritance) 자식은 부모가 가진 유전자를 동일하게 갖고 있다. 그 동일한 부분을 일일히 쓰지 않고, 부모를 끌어와..
객체지향 프로그래밍 하나의 모델이 되는 청사진(blueprint)를 만들고 , → 클래스(class) 그 청사진을 바탕으로 한 객체를 찍어내는 프로그래밍 패턴 → 인스턴스(instance) 클래스를 만드는 최근에 ES6에 도입되었습니다. 클래스는 constructor를 품고 있습니다 class Car { constructor(brand, name, color){ //인스턴스가 만들어질 때 실행되는 코드 } } 속성과 메소드 클래스에 속성과 메소드를 정의하고, 인스턴스에서 그것을 사용합니다 ▶ 클래스: 속성의 정의 - ES5 에서는 class 와 constructor 대신 그냥 function 을 사용했다 - ES6 에서는 class 와 constructor 를 사용한다 //ES5 function Car(..
고차함수란? 1. 전달인자로 함수를 받는 함수 2. 함수를 리턴하는 함수 둘 중에 하나 이상 해당되면 고차함수이다. 고차함수에서 자주 쓰이는 내장고차함수 3가지 메소드가 있다. 특히, 배열 반복문에서 자주쓰이는 3인방이다. 그래서 배열 반복문 3인방이라고 이름 짓겠다. arr.filter() 특정 기준을 가지고 분류할때 (필터링) - 여러 음료중에서 티 종류만 꺼내고 싶을때 (티 종류만으로 배열만들기) 리턴값이 '참'인것만 걸러진다.문제 : 문자열을 요소로 갖는 배열을 입력받아 그 길이가 홀수인 요소만을 갖는 배열을 리턴해야 합니다.function filterOddLengthWords(words) { // TODO: 여기에 코드를 작성합니다. return words.filter(function(el){ ..