js 3

Spread operator: unshift보단 전개연산자를 쓰자!

배열에 원소를 추가할 때 unshift를 쓰곤 한다. arr = [2, 3, 4] arr.unshift(1) arr.unshift(0) console.log(arr) // [0, 1, 2, 3, 4] 그러나 unshift는 다음과 같이 배열의 값을 직접 참조하여 원본 배열에 변형을 일으키는데, 불변성의 이슈에서나 성능 상의 이유에서나 좋지 못하다. arr = [2, 3, 4] // 0: 2, 1: 3, 2: 4 arr.unshift(1) // 0: 1, 1: 2, 2: 3, 3: 4 arr.unshift(0) // 0: 0, 1: 1, 2: 2, 3: 3, 4: 4 보시다시피 배열의 원소와 인덱스의 연결이 전부 끊어지고 새로운 값이 할당된다. 중간에 새로운 원소가 끼어들거나, 최악의 경우 첫 번째에 새로..

Javascript/core 2021.04.05

static method, static property와 class에 관하여

참조prototype, __proto__에 관하여 prototype, __proto__에 관하여 프로토타입 개념에 관한 도식이다. Constructor 생성자함수로 instance를 생성한 경우 Constructor의 프로퍼티인 prototype가 instance의 __proto__라는 프로퍼티에 전달이 된다. 그럼 prototype은 무엇일까? co.. student513.tistory.com prototype, __proto__에 관하여 프로토타입 개념에 관한 도식이다. Constructor 생성자함수로 instance를 생성한 경우 Constructor의 프로퍼티인 prototype가 instance의 __proto__라는 프로퍼티에 전달이 된다. 그럼 prototype은 무엇일까? co.. stu..

Javascript/core 2020.12.20

this에 관하여

함수가 호출될 때 동적으로 바인딩된다. 호출 방식에 따라 바인딩이 달라진다. 호출되는 문맥 브라우저 node.js 전역공간에서 호출 시 window global 함수 호출 시 window global 메소드 호출 시 메소드 호출 주체(메소드명 앞) callback 호출 시 기본적으로는 함수 내부에서와 동일 생성자함수 호출 시 인스턴스 함수 호출시 그런데 이상하다. 함수 호출 시에도 전역공간에서 호출한 것과 같은 효과가 나타난다. 이 경우에는 함수의 호출이 전역공간에서 일어난 것이므로 자연스럽다고 볼 수 있다. function a() { console.log(this); } a(); 함수 내에 함수가 호출된 경우에는 어떨까? function b() { function c() { console.log(thi..

Javascript/core 2020.12.15