함수 선언이 있습니다. 위의 함수 선언은 아무런 효과가 없다, 즉,이 오류가 발생하지 않아야하고 a();
가 경고 창을 열해서는 안자바에서 전역 함수 선언을 재정의합니다.
function a(){alert("Hello");}
내가 스크립트를 가지고 싶습니다은 전에 위의 스크립트를 를 실행합니다. 이
var a = function(){ alert("Hello");};
같은 변수 할당 내가
Object.defineProperty(window, 'a', {value: function(){}});
을 할 수 있었다면 은 그래서 A는 쓸 수 없습니다 그 효과가 없습니다 후 발생하는 과제.
그러나 함수 선언에서는 동일한 문제가 발생할 수 있습니다. 아무리 쓰기/구성 설정 방법, 새로운 함수 선언은 적용되지 않는다거나 defineProperty
핸들러가 있기 때문에,
Uncaught SyntaxError: Identifier 'a' has already been declared (Chrome)
TypeError: cannot declare global binding `a': property must be configurable or both writable and enumerable (Firefox)
ES6 프록시 유망 보였다 같은
같은 오류를 발생하지만 '프록시'에없는 것 같다window
개체 이제 함수 선언이 브라우저 또는 ecmascript 사양에 따라 구현되는 방식 때문에이 작업을 수행 할 수 없다는 생각이 들었습니다. 이것을 달성 할 수있는 방법이 있습니까?
또는 a
함수가 선언 될 때 알림을받을 방법이 있다면 window.a = function(){}
을 수행 할 수 있습니다. 그런 방법이 있습니까?