본문 바로가기

TIL

(52)
191122(금) TIL-2. Inheritance & Polymorphism [CODESTATES im16] Sprint Office Hour 1. Inheritance & Polymorphism Inheritance(상속): 상위 객체의 특징을 하위 객체에게 넘겨주는 것 Polymorphism(다형성): 동일한 조작방법으로 동작을 시키지만, 작동 결과는 다른 것 2. Prototype 2-1. Prototype Object prototype 객체: constructor에 의해 생성될 각각의 인스턴스에게 공유. 프로퍼티를 제공하기 위해 사용 함수.prototype, 객체.__proto__(dunder proto)로 접근 가능하다. dunder proto덕분에 프로토타입 체이닝이 가능해짐 프로토타입 객체가 뭔지. 프로토타입 프로토타입 체이닝, 왜 가능해지는지 2-2. Prototy..
191120(수) TIL-3. Understanding Prototype Chain [CODESTATES im16] Understanding Prototype Chain 1. 자바스크립트? prototype기반의 언어. ES5까지는 class가 없었음. > pseudo-classical ES6부터 calss 지원(하지만 그렇다고 해서 JS가 프로토타입 기반의 언어인 것은 변하지 않았음.) 2. prototype 상속 2-1. __proto__: 프로토타입을 확인할 수 있다. function Human(name) { this.name = name; } let steve = new Human('steve'); steve.__proto__ === Human.prototype; //true Q1. 아래 코드가 실행되는 이유는? var Human = function(name) { this.nam..
191120(수) TIL-2. Start Inheritance patterns [CODESTATES im16] Start Inheritance patterns 1. Prototype 자바스크립트는 Java, C++과 같은 클래스 기반 객체지향 프로그램이 아니고 프로토타입기반의 객체지향 언어이기 때문에 프로토타입이 매우 중요하다. ES5까지는 class가 없었음. > class구현을 위해 sudo-classical 등장 ES6부터 calss를 지원하기는 하지만 모양만 class같은것 뿐이지 다른 언어의 class들과는 작동 방식이 다르다.(JS는 prototype기반의 언어이기 때문에!) 자바스크립트의 모든 객체는 [[Prototype]]이라는 인터널 슬롯(internal slot)를 가진다. [Prototype]]의 값은 null 또는 객체이며 상속을 구현하는데 사용된다. [[Pr..
191120(수) TIL-1. Solution9-10, ES6기능 [CODESTATES im16] Solution9-10, ES6 기능 1. Solution9-10 1-1. Deep copy & Shallow copy 1) Deep copy 원시 타입(primitive type) String, Boolean, Number 등 구조가 비교적 단순한 타입 복사가 일어날 때 독립적이고 새로운 메모리 공간을 확보하여 값을 저장. 2) Shallow copy 참조타입이 독립적인 값을 저장하지 않는 이유: 비효율을 방지하기 위해서 참조 타입(reference type) Object, Array, Function 등 구조가 비교적 복잡한 타입 복사가 일어날 때, 메모리 어딘가에 객체 그 자체가 아닌 객체의 위치 값을 저장 2. ES6 기능(개인적으로 알아봄) 2-1. ES6: 추가..
191119(화) TIL-2. Check Point 9-10 [CODESTATES im16] Check Point 9-10 1. Checkpoint 9 Q7. After the following code runs, what will be the value of myArray? var myArray = [2, 3, 4, 5]; function doStuff(arr) { arr = [ ]; } doStuff(myArray); 예상: [] 정답: [2, 3, 4, 5] Q9. After the following code runs, what will be the value of player? var player = { score: 3 }; function doStuff(obj) { obj = {}; } player = doStuff(player); 예상: {score:3..
191119(화) TIL-1. Time Complexity 2 [CODESTATES im16] Time Complexity 2 1. Time Complexity 2 1-1. O(1): constant time 입력데이터의 크기와 상관 없이 언제나 일정한 시간이 걸리는 알고리즘 F(n) { return (n[0] === 0) ? true : false; } 1-2. O(n): linear time 입력데이터의 크기와 비례해서 시간이 증가하는 알고리즘 function F(n) { for (let i = 0; i < n.length; i++) { conosole.log(i); } } 1-3. O(n^2): quadratic time function F(n) { for (let i = 0; i < n.length; i++) { for (let j = 0; j < n.len..
191118(월) TIL-2. Time Complexity [CODESTATES im16] Time Complexity Compleity Analysis 알고리즘을 실행하는 것에 있어 시간과 공간을 얼마나 차지하는지 나타내는 지표 시간과 공간의 복잡도: 그 알고리즘의 효율을 나타냄 1. 시간복잡도 시간복잡도를 알 수 있으면 알고리즘의 실행시간이 얼마나 걸릴지 예상해 볼 수 있다. 2. 자료구조별 시간복잡도 해시테이블 추가: O(1) Binary Search: O(log n) Linked List: O(n) 재귀함수: O(c^n) 2-1. Array 메모리가 정해져있는 배열이라고 가정함.(JS는 아님) Lookup (position): 정해져 있는 자리에 저장되어 있는 데이터를 바로 불러오는 것이기 때문에 O(1) Assign: Lookup과 마찬가지로 정해져 있..
191118(월) TIL-1. Checkpoint5&6, Sprint Office Hour [CODESTATES im16] Checkpoint5&6, Sprint Office Hour 1. Checkpoint 5 & 6 1-1.bind() call(), apply()와 bind()의 차이. => bind()는 함수를 실행하지 않고 this 바인딩만 한 뒤, 함수를 반환한다. : 함수를 실행하지 않음! 바인드에도 우선순위가 있나요? => 예, 있습니다. 레퍼런스로 올리겠음. JS this 바인딩 우선순위 1-2. 5-Q9 var name = "Window"; var alice = { name: "Alice", sayHi: function() { alert(this.name + " says hi"); } }; var bob = { name: "Bob" }; alice.sayHi.bind(bob);..