본문 바로가기

TIL/JavaScript

(13)
재귀 재귀 : 원래의 자리로 되돌아가거나 되돌아옴. 재귀 함수 : 함수 안에서 자기 자신을 호출하는 함수 (반복적으로 같은 코드를 호출하여 사용) [재귀로 해결하는 문제] - 자연수로 이루어진 리스트를 입력받고, 리스트 의 합을 리턴하는 함수 작성하기 [1, 2, 3, 4, 5] => 15?? 1. 문제를 작게 쪼개기 arrSum([1,2,3,4,5]) === 1 + arrSum([2,3,4,5]) arrSum([2,3,4,5]) === 2 + arrSum([3,4,5]) ... 2. 1번보다도 작게 가장 작은 단위로 문제를 쪼개기 arrSum([5]) === 5 + arrSum([]) 3. 작은 단위의 문제 해결 > 전체 문제 해결 arrSum([]) === 0 ; // 더이상 작아질 수 없다 arrSum(..
비동기 2 보호되어 있는 글입니다.
비동기 - 동기(synchronous) 특정 코드의 실행이 완료될 때까지 기다리고 난 후, 다음 코드를 수행 (여러 코드를 수행하기에는 무리가 있음) -비동기(asynchronous) 특정 코드의 실행이 완료되는 것을 기다리지 않고, 다음 코드를 수행 (여러코드 병행이 가능함) >> 비동기의 경우가 더욱 효율적이며, 싱글 스레드 기반인 자바스크립트가 비동기 처리가 가능한 이유는 환경에서 도와주기 때문 const timer = setTimeout(function () { console.log('10초 후 실행'); }, 10000); setInterval(function () { console.log('1초마다 실행'); }, 1000); const timer = setInterval(function () { c..
extend, super - extend와 super extend는 파생(자식) 클래스를 만들 때 사용한다. >> class 파생클래스명 extends 기본클래스명 >> 으로 기본(부모)클래스를 파생(자식)클래스가 상속받을 수 있다. 이와 더불어 사용하는 것이 super 이다. super은 자식 클래스에서 부모 클래스를 수정할 때 주로 사용된다. super() >> 부모 클래스의 생성자(constructor)를 호출한다.(속성값) super.부모클래스명 >> 부모 클래스의 메소드를 호출할 수 있다.(메소드의 리턴 값) 직접 수정이 아닌, 이렇게 불러와서 수정이 가능한 것은 코드 중복을 막을 수 있고, 간결한 코드를 완성 시킬 수 있다는 장점이 있다. Grub -> Bee -> forager/ honeymaker class Gru..
프로토타입 체인 객체 지향 프로그래밍(OOP) 는 4가지의 특성이 있다. 1. 캡슐화 2. 추상화 3. 상속 4. 다형성 그 중 상속에 관하여, 상속을 javascript에서 구현할 때 프로토타입 체인을 사용한다. [프로토타입 체인] js는 특정 객체의 속성과 메소드에 접근 할 때, 그 특정 객체 뿐 아니라 그 위의 부모역할을 하는 프로토타입 객체의 속성과 메소드에 접근이 가능하다. 어떠한 객체에서 속성과 메소드 접근 시 원하는 것이 그 객체에 없다면, 객체의 __proto__ 가 가리키는 링크를 따라 부모역할을 하는 객체의 속성과 메소드를 차례로 확인한다. 이렇게 점차 위로 검색해 올라가는 것이 프로토타입 체인이다. 늘 제일 위까지 올라갔을 때 그 위치는 Object.prototype이다. [ prototype 체인 ..
prototype(프로토타입) 자바스크립트는 프로토타입(원형 객체) 기반 언어이다. js의 모든 객체들은 프로토타입으로, 상위 프로토타입 객체로 부터 하위 프로토타입 객체는 메소드와 속성을 상속받을 수 있다. (이는 그 위로 몇개의 객체가 있든 가능하다.) 이를 우리는 프로토타입 체인 이라고 부르며, 다른 객체에 정의된 메소드와 속성을 한 객체에서 사용할 수 있는 이유이다. >> 상속되는 속성과 메소드는 객체의 생성자의 prototype 이라는 속성에 정의되어있는 것. 클래스, 인스턴스, 프로토타입의 관계 (.prototype, __proto__) 위와 같이 Menu 라는 클래스에 americano 라는 인스턴스까지 만든 모습일 때를 생각한다. Menu 라는 클래스를 만들면서 우리는 prototype 이라는 객체를 만든적이 없지만, ..
객체 지향 프로그래밍(OOP) -객체 지향 프로그래밍은 데이터 접근, 데이터 처리 과정에 대한 모형을 만들어내는 방식 >> 데이터와 기능을 합쳐서 생각 OOP(객체 지향 프로그래밍) 프로그램 설계철학이자 개념의 일종으로, 명령형 프로그래밍에 속한다. 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 객체라는 단위로 나누고, 그룹화 하여 이들의 상호작용으로 서술하는 방식이다. (4가지의 주요 개념을 통해 재사용성을 얻을 수 있다.) 4가지의 주요개념 1. Encapsulation (캡슐화) : 코드가 복잡하지 않게 하며, 재사용성을 높인다. - 데이터의 기능을 하나의 단위로 묶는 것. (하나의 객체 안에 넣어 묶어 *느슨한 결합을 함.) - 구현을 숨기고, 동작만을 노출시킴. >> 객체 내 메서드의 구현만 수정하..
객체 지향 프로그래밍 (클래스와 인스턴스) in JS - 객체 지향 프로그래밍 : 하나의 모델이 되는 청사진을 만들고, 그 청사진을 바탕으로 한 객체를 만드는 프로그래밍 패턴 하나의 모델이 되는 청사진을 우리는 "class" 그것을 바탕으로한 객체는 "instance object (instance)" 라고 부른다. [클래스] 클래스는 ES5 이후 , ES6 부터 사용되는 문법으로 생성자 함수로 만들었었지만, 이젠 class 키워드로 만드는 문법이다. //ES5 문법 function Menu(category, name, price){ // 인스턴스가 만들어질 때 실행되는 코드 this.category = category; this.name = name; this.price = price; } //ES6문법 class Menu{ constructor(categ..