"브라우저의 대부분이 똑같이 구현하는 것 같지만 그렇지 않은 이유는 무엇입니까? ECMAScript 사양에서 구현하는 방법에 대한 요구 사항이 있습니까?"
저는 전문가는 아니지만 언어 사양이 내부적으로 구현되어야하는 방식을 정확히 설명하는 이유를 생각할 수 없습니다. 그러한 제약은 퍼포먼스가 아닌 다른 방법으로 언어의 기능에 영향을 미치지 않기 때문에 전혀 목적이 없습니다. "
-
편집 두 downvotes에도 불구하고, 사실이 절대적으로 정확하고 사실에 특히 사양의 section 8.6.2에 desscribed 된 ECMA-262 사양의 구현 독립이다 이 테이블의 설명은 고유 한 ECMAScript 객체에 대해이 문서에서 달리 언급하지 않는 한 네이티브 ECMAScript 객체에 대한 동작을 나타냅니다. 호스트 객체는 해당 객체와 일치하는 한 구현 의존적 동작으로 이러한 내부 속성을 지원할 수 있습니다. 이 문서에 명시된 특정 호스트 객체 제한 "
"호스트 개체는 달리 지정하지 않는 한 이러한 내부 방법을 구현할 수 있습니다."
"해시"라는 단어는 전체 ECMA-262 사양에 나타나지 않습니다.
(원본, 계속) 말에 Javascscript의
구현, 인터넷 익스플로러 6.0과 구글 크롬의 V8 거의 공통점하지만, 같은 사양에 (다소) 모두 준수이 없습니다.
특정 자바 스크립트 인터프리터가 어떤 작업을하는지 알고 싶다면 해당 엔진을 구체적으로 조사해야합니다.
해시 테이블은 상호 참조를 만드는 효율적인 방법입니다. 그것들이 유일한 방법은 아닙니다. 일부 엔진은 예를 들어 해시 테이블의 오버 헤드가 덜 효율적인 작은 세트에 대해 저장소를 최적화 할 수 있습니다.
하루의 끝에, 당신이 알아야 할 것은 작동한다는 것입니다. ajax를 사용하거나 메모리에서조차도 큰 세트의 룩업 테이블을 만드는 더 빠른 방법이있을 수 있습니다. 예를 들어, 트라이 데이터 구조 사용에 관한 흥미로운 토론을 참조하십시오 (this post from John Reseig's blog).
하지만 여기서도 마찬가지입니다.이 객체 또는 네이티브 JS 객체의 사용 여부는 JS가 객체를 구현하는 방법에 대한 정보로 이루어져서는 안됩니다. 퍼포먼스 비교에 의해서만 구동되어야합니다 : 각 방법은 어떻게 확장됩니까? 이 정보는 JS 엔진 구현에 대한 정보 만 제공하는 것이 아니라 성능 테스트를 통해 얻을 수있는 정보입니다.
글쎄, 당신의 의견에 "의 HashMap"는 무엇인가? – Gumbo
나는 그가 java.util.HashMap을 언급하고 있다고 생각한다. 이것은 같은 것이 아니다. –
자바 스크립트는 자바가 아니며 자바를 통해 구현되지 않습니다. – Victor