객체의 프로퍼티에 접근해서 할당할 경우 기존 객체의 주소값을 가리키기 때문에 같이 값이 변경될 수 있다.(가변하다)
let copyObject = function (target) {
let result = {};
for (let prop in target) {
result[prop] = target[prop];
}
return result;
};
객체를 하나 만들어서 console.log로 찍어보면 프로퍼티 하나하나 다 들어가는 것을 확인할 수 있었다.
let copyObjectDeep = function(target) {
let result = {};
if (typeof target === 'object' && target !== null) {
for (let prop in target) { // 순회
result[prop] = copyObjectDeep(target[prop]); // 재귀 target객체의 속성을 깊은 복사
console.log(prop);
}
} else {
result = target; // 기초 자료형일 때 복사
}
return result;
}
정의 : 실행할 코드에 제공할 환경정보 객체
VE + LE + ThisBindings
변수 활용
var self = this;
잘 안쓴다.
화살표 함수
this바인딩을 생략한다.
일반 함수와 화살표 함수의 가장 큰 차이점 : this binding 여부
콜백함수 호출 시 그 내부의 this
함수라서 this가 없어지기에 전역객체를 바라본다.
콜백 함수에 별도로 this 지정할 경우 예외가 발생한다.
생성자 내부 함수에서의 this
new 생성자 -> 해당 this를 가리킨다.
함수.call(객체, 매개변수);
함수.call(객체, [매개변수]);
함수.bind(객체, 매개변수);
함수에 미리 this를 적용하거나 부분 적용 함수를 사용할 때 쓰기도 한다.
전반적으로 무슨 느낌인지는 알 것 같은데 예제를 직접 실행해보았는데 예상했던 결과가 아니라 다르게 나오는 경우가 많았다.
한번씩 들어보고 찾아본 개념들이지만 VE와 LE의 정의는 처음 보았다.
전체적으로 어떤 느낌인지는 알겠지만, 안보고 설명할 수 있을 정도는 아닌 것 같다.
오늘은 집중을 제대로 안한 것도 있고 내용이 개념적인 부분이라 어려운 것도 있어서 머리속에 제대로 안들어왔다
컨디션 조절도 하면서 내일 빠르게 강의를 다시 훑어보며 확실하게 짚고 넘어가야겠다. 내가 직접 설명할 수 있을 정도로 공부해야겠다.