오늘 JavaScript Koans sprint 진행 중에 알게 된 내용 정리
Date()
생성자Date
생성자는 시간의 특정 지점을 나타내는 Date
객체를 생성한다.
new Date()
- 현재 날짜에 대한 모든 정보를 표시 (요일 월 일 년 시:분:초 타임스탬프
)const now = new Date(); // --> Thu Jan 28 2021 10:23:27 GMT+0900 (대한민국 표준시)
.getFullYear()
- 년도를 반환const currentYear = new Date().getFullYear();
// --> 2021
.repeat(count)
- 문자열을 반복한 값을 반환하는 메서드'love'.repeat(3); // ---> 'lovelovelove'
Object.assign()
- 출처 객체로부터 대상 객체로 속성을 복사Object.assign()
메소드는 열거할 수 있는 하나 이상의 출처 객체로부터 대상 객체로 속성을 복사할 때 사용합니다. 대상 객체를 반환합니다.
문법
Object.assign(target, ...sources);
target
- 대상 객체 MUTABLEsources
- 하나 이상의 출처 객체 IMMUTABLE
prop in obj
// --> true | false복사를 하려는 속성이 참조 자료형인 경우 주소가 복사된다.
JSON.parse(JSON.stringify(obj))
this
는 쉽게 말해 '엄마 찾기'다.this
: 실행 중에 this가 포함된 라인(scope)을 가능하게 하신 분. this가 어려운 이유는 그 분이 바뀔 수 있기 때문. this는 동적으로 변한다. 실행 중에 변한다.const js = {
fn: function() {
console.log('hello', this)
}
}
js.fn(); // --> hello {fn: f}
console.log(this); // --> 윈도우 객체가 반환된다. window {window: Window, self: Window, document: document, name: "", ...}
const spread = [];
let arr1 = [0, ...spread, 1]; // --> [0, 1]
// 전개문법을 사용하지 않으면 빈배열 자체가 전달된다.
let arr2 = [0, spread, 1]; // --> [0, [], 1]
arr.concat()
대신에 전개문법을 사용할 수 있다.let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let concatenated = [...arr1, ...arr2]; // --> [1, 2, 3, 4, 5, 6]
let useConcat = arr1.concat(arr2); // --> [1, 2, 3, 4, 5, 6]
arguments
rest parameter는 spread syntax를 통해 간단하게 구현할 수 있다.
function getAllParamsByRestParameter(...args) {
return args; // --> 배열로 리턴된다.
}
arguments
를 통해 비슷하게 함수의 인자들을 다룰 수 있다. (spread syntax 도입 이전)
arguments
는 모든 함수의 실행 시 자동으로 생성되는 객체이다.
function getAllParamsByArgumentsObj() {
return arguments; // --> 객체로 리턴된다. (인덱스가 key이고 입력받은 파라미터가 value인)
}
Array.from()
과 전개문법배열이 아니더라도 이터러블 객체이면 전개 문법을 사용할 수 있습니다.
전개 문법은 for..of
와 같은 방식으로 내부에서 iterator(반복자)를 사용해 요소를 수집합니다.
문자열에 for..of
를 사용하면 문자열을 구성하는 문자가 반환됩니다. ...str
도 "H","e","l","l","o"
가 되는데, 이 문자 목록은 배열 초기자(array initializer) [...str]
로 전달됩니다.
메서드 Array.from
은 문자열 같은 이터러블 객체를 배열로 바꿔주기 때문에 Array.from
을 사용해도 동일한 작업을 할 수 있습니다.
그런데 Array.from(obj)
와 [...obj]
에는 다음과 같은 미묘한 차이가 있습니다.
Array.from
은 유사 배열 객체와 이터러블 객체 둘 다에 사용할 수 있습니다.Array.from
이 보편적으로 사용됩니다.Array.from(obj)
와 Object.values(obj)
function getAllParamsByArgumentsObj() {
return arguments; // --> 객체로 리턴된다.(인덱스가 key이고 입력받은 파라미터가 value인)
}
let argumentsObj = getAllParamsByArgumentsObj('deer', 'cat', 'dog');
// --> { 0: 'deer', 1: 'cat', 2: 'dog'}
// Array.from(obj)은 문자열 같은 이터러블 객체의 *value값들*을 배열로 바꿔준다.
let argsArr = Array.from(argumentsObj); // --> ['deer', 'cat', 'dog']
// Object.values(obj)를 사용해도 같은 결과를 얻을 수 있다.
let valuesOfObj = Object.values(argumentsObj); // --> ['deer', 'cat', 'dog']