가비지 컬렉션은 메모리 관리를 담당하는 기능으로, 더 이상 필요하지 않은 메모리를 자동으로 해제하여 프로그램이 메모리 누수(memory leaks)에 빠지지 않도록 도와줍니다.
🧐 가비지컬렉션 기준
JavaScript는 도달 가능성(reachability)에 따라 메모리를 관리합니다.
👉도달 가능한 값은 쉽게 말해 어떻게든 접근하거나 사용할 수 있는 값을 의미합니다.
도달 가능한 값은 메모리에서 삭제되지 않습니다.
JavaScript Engine 내부의 Garbage Collector가 끊임없이 도달 가능한 값을 확인합니다.
Garbage Collector에 의해 확인 된 도달 할 수 없는 값은 메모리에서 삭제됩니다.
🔗Javascript info 글
객체 안에 프로퍼티로 정의된 함수
사용예시
const shopOrder = {
total: 0,
date: '2023. 12. 06',
tableIndex: 5,
menu: [
{ name: '통 새우 돈까스', price: 13000, count: 2 },
{ name: '치즈 돈까스', price: 10000, count: 1 },
{ name: '곰곰 육개장', price: 15000, count: 3 },
],
//객체 안에 만들기
totalPrice() {
this.total = this.menu.reduce((acc, cur) => acc + cur.price * cur.count, 0);
return this.total;
},
};
shopOrder.totalPrice();
메서드와 this...
this 참조는 런타임(실행) 중에 결정됩니다. 즉, 컨텍스트에 따라 달라집니다.
this는 항상 메서드가 정의된 객체를 참조할 것이라고 착각합니다. 이런 개념을 'bound this'라고 합니다.
JavaScript의 this는 런타임 중에 결정되므로 상대적으로 유연합니다.
❗❗ this는 나를 호출한 대상을 this로 가지기 때문에 호출한 사람이 누구인지 확인해야함.
또 다른 예시
function TestFunc(name, age) {
this.name = '이경민'; //여기서의 this는 window
this.age = 28; //여기서의 this는 window
this.getAge = function () { //여기서의 this는 a
return age;
};
}
let a = new TestFunc('kim', 21);
console.log(a.getAge()); //21
console.log(a.getName()); //kim
// console.log(TestFunc.getAge()); //error 발생
console.log(TestFunc()); //undefined
this는 써봐야 어떻게 돌아가는지 이해할것같습니다,,
🔗참고 사이트
📍chatGPT
📍Javascript info
📍멋사 수업 내용...
📍멋사 멘토님 말씀...