GeezerVison is showing ko.javascript.info — 검색 알고리즘
돌아가기이번에 풀 과제는 두 부분으로 구성됩니다.
먼저, 아래 객체를 살펴봅시다.
let head = {
glasses: 1
};
let table = {
pen: 3
};
let bed = {
sheet: 1,
pillow: 2
};
let pockets = {
money: 2000
};
__proto__를 사용해서, 프로퍼티 조회가 pockets → bed → table → head의 경로를 따르도록 하세요. pockets.pen은 table에 있는 3, bed.glasses는 head에 있는 1이 되어야 합니다.
pockets.glasses로 glasses를 얻는 것이 빠를까요? 아니면 head.glasses로 얻는 것이 빠를까요? 필요하다면 벤치마크를 사용해 성능을 측정해 보세요.
-
__proto__를 추가해봅시다.
let head = {
glasses: 1
};
let table = {
pen: 3,
__proto__: head
};
let bed = {
sheet: 1,
pillow: 2,
__proto__: table
};
let pockets = {
money: 2000,
__proto__: bed
};
alert( pockets.pen ); // 3
alert( bed.glasses ); // 1
alert( table.money ); // undefined
-
모던 엔진에선 객체에서 프로퍼티를 가져오는 것과 객체의 프로토타입에서 프로퍼티를 가져오는 것 사이에 성능적인 차이가 없습니다. 모던 엔진은 프로퍼티가 어디서 발견됐는지 기억하고 있다가 다음 요청 시 이 정보를 재사용합니다.
pockets.glasses을 예시로 들어봅시다. 엔진은 glasses가 발견된 곳(head)을 기억하고 있다가, 다음 요청부턴 이 프로퍼티가 발견된 곳에서 검색을 시작할 겁니다. 모던 엔진은 뭔가 변화가 생기면 내부 캐시를 변경해줄 정도로 똑똑하기 때문에 최적화를 안전하게 수행해줍니다.