- 이머시브 과정 2일차.
- JS koans를 풀었다.
- Arrow function, destructuring, this, call(), apply(), bind()에 대해 학습했다.
- 처음엔 call(), apply(), bind()이 이해가 되지 않았다. koans를 진행하면서 각 메소드의 차이점이 눈에 들어왔다. 먼저 공통점은 call(), apply(), bind() 모두 첫 번째 인자를 this로 사용한다. 차이점은 call()은 두 번째 인자부터 인수 리스트로 받는데 apply()는 단일 배열로 받는다는 것이다. 이외 작동방식은 똑같다고 보면 된다. bind()도 첫 번째 인자를 this로 사용하고 두 번째 인자부터 인수 리스트로 받는건 call()가 같지만 차이점은 바로 실행되는 것이 아닌 새로운 함수를 리턴하는 점이다.
let kim = {first: 20, second: 30}
function sum() {
return this.first + this.second;
}
let newFunc = sum.bind(kim);
newFunc()
위 코드처럼 객체안에 포함된 메소드가 아닐지라도 sum 함수는 bind()를 이용해 this 값을 kim
으로 바인딩 한 상태로 새로운 함수를 만들어낼 수 있다.
- git을 공부하면서
upStream
을 본 저장소의 별칭(?)으로 사용한다는걸 새로 알았다.
upStream
=> fork => origin
=> clone => local