문제

다음과 같이 속성 설명자를 설정합니다.

Object.defineProperty(window, 'someFunction', {
    value: function() { alert('safe'); },
    writable: false,
    enumerable: false,
    configurable: false
});

...내가 아는 한, someFunction 의 자산 window 쓸 수 없습니다.그것은 작동합니다 함수 표현식 예상대로 객체 속성에 함수가 직접 할당되는 것인지... 깡깡이

window.someFunction = function() { alert('boom!'); }
someFunction(); // safe

...또는 전역 변수에 할당됩니다. 깡깡이

var someFunction = function() { alert('boom!'); }
someFunction(); // safe

그러나 그것은 작동하지 않는 것 같습니다 함수 선언: 깡깡이

function someFunction() { alert('boom!'); }
someFunction(); // boom!

이 동작은 의도적인 것인가요?그 이유는 무엇입니까?이것은 어디에도 문서화되어 있습니까?아니면 제가 어리석은 실수를 하고 있는 걸까요?


그런데 저는 이것을 테스트하기 위해 Chromium 17을 사용하고 있습니다.엄격 모드는 별 차이가 없는 것 같습니다.

도움이 되었습니까?

해결책

이것은 버그입니다 (버그 #115452 참조), 답변할 때에도 발생했습니다. 이 질문.

호환성 확인: 테스트 케이스

  • Firefox 4+에서는 잘 작동합니다.
  • Chrome 16에서는 잘 작동합니다.
  • Chrome 17에서는 작동하지 않습니다.
  • IE8-에는 없습니다 Object.defineProperty, 그래서 작동하지 않습니다
  • IE9에서는 작동하지 않습니다.
  • Safari 5에서는 작동하지 않습니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top