6주차 기록
배운 내용
자바스크립트에서 클래스를 이용하여 객체를 다루는 방법을 배우고 재귀적인 용법을 이용하여 JSON과 Tree UI를 다루는 것도 학습하였고 자료구조에서 스택, 큐, 그래프, 트리를 다뤘다.
느낀 점
세션 2의 첫 주였는데 세션 1과 비교해서 말도 안 되게 난이도가 상승했다는 것을 느꼈다. 우선 세션 1에서는 스프린트에서 많은 부분이 제공되었는데 세션 2는 처음부터 끝까지 코드를 작성해야했다. 주어진 틀에 맞추어 구현해야할 것을 생각하는 것과 처음부터 그 틀을 만들어가는 것은 많은 차이가 있음을 느꼈다. class를 이용하여 모듈화하는 과정은 java 언어 프로그래밍 방식과 거의 흡사하여 큰 어려움 없이 해결할 수 있었지만 재귀함수를 이용하는 부분은 동작과정을 이해하여 적용하는 것이 마냥 쉽지는 않아 시간이 많이 소요되었다. 세션 1과 비교하여 가장 크게 와닿은 부분은 Toy problem을 해결하는 것이었다. 세션 1이 끝나기 전에 풀었던 알고리즘 코플릿 문제 정도의 난이도를 생각하고 Toy problem을 마주하니 상당히 버겁다는 느낌을 받았다. 여태 풀지 못한 코플릿 문제는 없었는데 Toy problem에서 처음으로 풀지 못한 문제를 만나게도 되었다. 이런 점으로 미루어 보아 공부량을 절대적으로 늘려야한다는 사실은 부정할 수가 없다.
sort 구현법
이전 블로그에서 javascript에서의 sort에 대해 포스팅을 한 적이 있다. javascript에서 sort() 메서드를 사용하면 오름차순으로 정렬이 완벽하게 수행되지 않고 요소들의 앞 자리 숫자를 기준으로 정렬이 되었다. 하지만 이번 주 공부를 진행하면서 오름차순과 내림차순으로 sort 메서드를 구현하는 방법이 있음을 알게 되었다. 인자로 함수를 넣어주면 가능하다.
let arr1 = [1, 2, 12, 3];
arr1.sort();
console.log(arr1); // [1, 12, 2, 3]
let arr2 = [1, 2, 12, 3];
arr2.sort((a, b) => a - b);
console.log(arr2); // [1, 2, 3, 12]
let arr3 = [1, 2, 3];
arr3.sort((a, b) => b - a);
console.log(arr3); // [3, 2, 1]
프로토타입
Javascript는 흔히 프로토타입 기반 언어라고 한다. Javascirpt에서는 객체를 상속하기 위해 프로토타입이라는 방식을 사용하는데 모든 객체들이 메서드와 속성들을 상속받기 위한 템플릿으로써 프로토타입 객체를 가진다는 의미이다. 각각의 프로토타입 객체는 다른 프로토타입 객체로부터 상속받을 수 있고 또 다른 프로토타입 객체를 상속시킬 수 있다. 이렇게 프로토타입 객체들이 연결되어 이어진 구조를 프로토타입 체인이라고 부른다.
class Person {
constructor(name, gender, age){
this.name = name;
this.gender = gender;
this.age = age;
}
introduce(){
console.log(`hi, my name is ${this.name}. I'm ${this.age} years old.`);
}
}
class Student extends Person {
constructor(name, gender, age, school){
super(name, gender, age);
this.school = school;
}
goToSchool(){
console.log(`I study at ${this.school} school`);
}
}
이렇게 프로토타입 체인을 통해 구현된 상속 관계에서 부모 객체의 메서드와 속성은 자식 객체에 복사되는 것이 아니라 체인으로 이어진 것을 타고 올라 접근을 한다. 디버깅을 했을 경우 super()를 만났을 때 Person 객체의 라인으로 이동을 한다는 뜻이다.
Author And Source
이 문제에 관하여(6주차 기록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@steel_hyuk___2/6주차-기록저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)