객체의 [[프로토타입]]을 수정하는 것이 성능을 저하시키는 이유는 무엇입니까?
MDN(Mozilla 개발자 네트워크)에서는 객체를 변경하지 말 것을 강력히 권고합니다. 사용된 방법에 상관없이 객체의 [[프로토타입]]. 이 경고는 최신 JavaScript 구현에서 발생하는 심각한 성능 저하에서 비롯됩니다.
Function.prototype을 통해 JavaScript 클래스에 멤버 함수를 추가하는 것이 권장되지만 다음 작업은 모두 수행됩니다.
foo.__proto__.bar = bar; Foo.prototype.bar = bar;
기능적으로 동일하고 Object.getPrototypeOf(foo)` 객체에 'bar 속성을 생성합니다.
문제는 'bar` 속성을 생성하는 것이 아니라 '__proto__ 속성 자체에 할당하는 데 있습니다.
fred.__proto__ = Object.prototype;
이 작업은 속성 액세스에 대한 JavaScript 엔진 최적화를 중단합니다. 기존 객체의 프로토타입 체인을 수정하면 이전의 모든 최적화 노력이 효과적으로 파괴됩니다.
예를 들어 V8 JavaScript 엔진은 숨겨진 클래스를 활용하여 속성 조회를 최적화합니다. 프로토타입 체인을 변경하면 이러한 최적화가 무효화되어 엔진이 덜 효율적인 방법으로 돌아가게 됩니다.
현장 전문가들은 변경 가능한 프로토타입이 성능에 미치는 영향에 대해 우려를 표명했습니다.
에 미치는 영향
동의는 분명합니다. 객체의 [[Prototype]]을 변경하는 것은 성능 최적화에 지장을 주기 때문에 피해야 합니다. 대신 Object.create()를 사용하여 고유한 프로토타입 체인으로 새 객체를 생성하는 것이 선호되는 접근 방식입니다.위 내용은 JavaScript에서 객체의 [[프로토타입]]을 수정하는 것이 성능을 저하시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!