전체 글
-
(loading)classJavascript 2020. 5. 10. 23:55
class class는 객체를 만드는 공장이라고 할 수 있습니다. ECMAScript 6부터 지원하기 시작했기 때문에 이전까지는 비슷한 작동을 하는 네가지 방식을 사용해야 했습니다. Instantiation Patterns Functional / Functional Shared / Prototypal / Pseudoclassical 이 중에서 Pseudoclassical 방식을 살펴 보겠습니다. //menu라는 단일 프로퍼티를 생성하는 생성자 함수 function Order(menu) { this.menu = menu; } //prototype에 할당되는 message메서드 Order.prototype.message = function() { console.log(this.menu + "가 주문되었습니다..
-
(loading)Prototype ChainJavascript 2020. 5. 8. 18:34
Prototype prototype은 javascript의 기반이라고 할 정도로 중요합니다. 그래서 프로토타입 기반 언어 (Prototype based language) 라고 불리웁니다. 만약에 생성자안에서 메서드를 만들어 new키워드를 사용한다면 각각의 생성되는 객체에 모두 메서드가 생성되어 메서드를 사용하지 않더라도 각각의 객체안에 메서드를 포함하고 있어야합니다. 이는 객체 공간을 비효율적으로 사용할 뿐만아니라 각각의 메서드를 수정하고 싶을 경우에 하나씩 모두 새로 지정해주어야한다는 번거로움이 있습니다. 그래서 공통적으로 사용할 수 있는 메서드를 prototype을 통해서 만들어줍니다. function Order(menu, count){ this.menu = menu; this.count = coun..
-
그래프 (Graph)Data Structure 2020. 5. 6. 00:24
Graph 그래프는 객체 간의 관계를 표현하는 자료구조입니다. 엣지(edge)라는 개념을 사용하여 노드(node)라고 불리는 객체를 연결하여 저장하고 효율적으로 검색할 수 있도록 합니다. 엣지로 두 노드를 연결할때 방향성이나 가중치를 가질 수 있습니다. 하나의 방향으로 이동한다면 방향 그래프 (Directed Graph) 양방향으로 이동한다면 무방향 그래프 (Undirected Graph) 엣지에 가중치가 할당되었다면 가중 그래프(Weighted Graph) Directed / Undirected / Weighted 그래프 표현방법 그래프를 표현하는 방법을 여러가지가 있지만 대표적으로 인접행렬(Adjacency Matrix)과 인접리스트(Adjacency List)가 있습니다. 인접행렬 - Adjacen..
-
해시 테이블 (Hash table)Data Structure 2020. 5. 5. 19:34
Hash Function 해시 함수는 어떠한 문자열을 고정된 길이의 암호화된 문자열로 바꿉니다. 암호화되어 출력된 문자열은 원래 문자열로 되돌아 갈 수 없습니다. 밑에 있는 두개의 코드처럼 해시함수를 간단히 구현할 수 있습니다. function hashFunction (key) { return key % 3; } console.log(hashFunction(128745)); // 0 String.prototype.hashCode = function() { var hash = 0; if (this.length == 0) { return hash; } for (var i = 0; i < this.length; i++) { var char = this.charCodeAt(i); hash = ((hash
-
연결 리스트 (Linked List)Data Structure 2020. 5. 1. 17:26
Linked List 연결로 이루어진 자료 구조입니다. 무엇이 연결되어 있을까요? 노드(Node)의 연결로 이루어진 자료구조입니다. 노드는 데이터와 주소를 가지고 있습니다. 노드가 어떤 주소를 가지고 있을까요. 노드가 어떤 주소를 가지고 있느냐에 따라서 연결 리스트가 달라집니다. 다음 노드의 주소 / 이전과 다음 노드의 주소 단일 연결 리스트 (Singly-Linked List) / 이중 연결 리스트 (Double Linked List) singly-linked list list.head.next.next.value === 37 const list = { head: { value: 12 next: { value: 99 next: { value: 37 next: null } } } }; Double Lin..
-
스택과 큐(Stack, Queue)Data Structure 2020. 5. 1. 11:29
집어 넣은 데이터에서 처음에 넣은 것을 가져가느냐 마지막에 넣은 것을 가져가느냐 두가지의 경우에 따라서 자료구조가 달라집니다. Stack (마지막) 쌓여있는 접시에서 가장 위에 있는 접시를 먼저 닦아야 하듯이 마지막 요소를 먼저 가져옵니다. Queue (처음) 놀이기구를 타기위해 가장 먼저 온 첫 손님이 가장 먼저 놀이기구를 타듯이 첫 요소를 먼저 가져옵니다. In Javascript 자바 스크립트에서 어떻게 구현될 수 있을까요. Stack push 메서드로 요소들이 객체 형태로 storage에 들어갑니다. storage에 들어가는 객체의 key 는 숫자, value 는 요소입니다. 객체 key의 숫자는 데이터의 크기를 알 수 있는 top 을 참조합니다. 만약에 요소가 push 를 통해서 추가된다면, t..
-
자료구조 (Data Structure)Data Structure 2020. 5. 1. 11:05
Data "문자, 숫자, 소리, 그림, 영상, 단어" 형태로 이루어진 의미 단위입니다. 사람들이 데이터를 분류하여 저장하는 일은 계속 진화하고 있습니다. 종이 -> 책 -> 도서관 -> 컴퓨터 현재 사람들은 컴퓨터에 데이터를 저장하는데요. 사람의 데이터를 컴퓨터에 어떻게 저장할 수 있을까요? 데이터 타입 (Data type) 컴퓨터에 0과 1로 저장되어 있는 데이터를 인간이 사용하는 여러 가지 데이터들의 종류로 해석하기 위한 장치입니다. 데이터 타입 메모리의 크기 표현 가능 범위 byte 1 byte -128 ~ 127 short 2 byte -32,768 ~ 32,767 int 4 byte -2,147,483,648~2,147,483,647 long 8 byte -9,223,372,036,854,775..
-
실행 컨텍스트 (execution context)Javascript 2020. 4. 30. 19:57
Execution Context 실행 컨텍스트는 실행환경입니다. 어떤 실행환경일까요? 코드가 실행되기 위한 정보를 담고있는 환경입니다. 두가지의 실행환경이 있습니다. Global Context / Functional Context 전역 컨텍스트 (Global Context) 처음 코드를 실행시키는 순간에 생기는 컨텍스트로서 모든 것을 관리하여 페이지가 종료될때 사라집니다. 함수 컨텍스트 (Functional Context) 함수를 호출할 때 생성되고, 함수의 모든 동작이 종료되면 사라집니다. (closure는 예외) 컨텍스트의 정리 1. 코드를 실행하면 전역 컨텍스트가 생성되고, 함수를 호출할 때마다 함수 컨텍스트가 생성됩니다. 2. 컨텍스트가 생성될때 안에는 변수 객체 (arguments, variab..