나는 어떤 필드를 사용해야 하는지를 알기 위해 객체와 투영을 사용하는 함수를 코딩하고 있습니다.o [str] vs (o => o.str)
const o = {
a: 'Hello There'
};
function foo(o, str) {
const a = o[str];
/* ... */
}
foo(o, 'a');
아니면 기능 :
function bar(o, proj) {
const a = proj(o);
/* ... */
}
bar(o, o => o.a);
내가 V8 내 자바 스크립트 객체와 클래스를 만드는 생각 나는이 같은 문자열을 사용하는 경우는
궁금하네요. 동적으로 필드에 액세스하기 위해 문자열을 사용하는 경우 해시 테이블이나 다른 객체가 아닌 클래스를 만들 수 있습니까?
투영법이 루프 내부에있어 호출 사이트에서 속성 액세스를 수행하는 명백한 해결 방법이 더 이상 적용되지 않는다고 가정 해 보겠습니다 .-) – Bergi
사실, 제 경우에는 필드를 알 수 없습니다. 함수를 호출하기 전에 사용됩니다. 잘 이해하면 숨겨진 클래스가 항상 만들어집니다. 그러나 V8은 myobject [variableStr]로 무엇을 할 것인가? – Greg
속성 검색을 수행합니다. 물론 캐시 가능한로드만큼 빠르지는 않습니다. 그러나 대안이 큰 세트의 함수 중 하나를 호출하는 것이라면 매우 빠릅니다. 어느 것이 더 빠를 것인지 또는 그 차이가 중요한지 예측하기는 어렵습니다. (물론, 내가 쓴 것처럼, 나는 현실에서 질문의 단순한 발췌 문장보다 더 복잡 할 것이라고 기대한다.) – jmrk