나는 요즘 es5를 읽고 전역 객체의 일부 내장 속성에서 [[configurable]] 속성이 true로 설정되어 있으며 이러한 속성을 삭제할 수 있음을 알았습니다.
예를 들면 다음과 같습니다.
Array.prototype 객체의 join 메소드에는 속성이 있습니다
{[[Writable]]:true, [[Enumerable]]: false, [[Configurable]]: true}
따라서 다음과 같이 Array의 조인 방법을 쉽게 삭제할 수 있습니다.
delete Array.prototype.join;
alert([1,2,3].join);
경고는 undefined
내 크롬 17, 파이어 폭스 9, 즉 10, 심지어 ie6에 표시됩니다.
Chrome 15 및 safari 5.1.1에서 [[configurable]] 속성이 true로 설정되고 결과 삭제도 true이지만 최종 결과는 여전히 function(){[native code]}
입니다. 이것은 버그이며 크롬이 수정하는 것처럼 보입니다.
전에는 눈치 채지 못했습니다. 내 생각에 사용자 코드에서 내장 함수를 삭제하는 것은 위험하며 다른 사람들과 작업 할 때 너무 많은 버그가 발생합니다. 왜 ECMAScript 가이 결정을 내립니까?