IE9의 Elusive Console.log: 조건부 존재
Internet Explorer 9에서 window.console.log의 존재는 흥미로운 수수께끼를 제시합니다. . 이 기사에서는 이 함수의 불가사의한 성격을 파헤치고 그 존재와 동작을 지배하는 상황을 탐구합니다.
IE9의 Window.console.log: 불완전한 그림
IE9의 엄격한 제한 내에서 window.console.log 함수는 특정 탭에 대해 개발자 도구 커튼이 우아하게 분리된 경우에만 전역 범위에 대한 액세스 권한이 부여됩니다. 그러나 이 일시적인 발현은 정적이지 않습니다. 무한한 웹을 탐색할 때 개발자 도구 창이 무의식적으로 닫히지 않는다면 콘솔 개체는 변함없는 동반자로 남아 있습니다. 하지만 아쉽게도 새 탭에서는 보기 힘든 콘솔을 공개하기 위해 개발자 도구와의 새로운 계약이 필요합니다.
신청과 전화의 조화가 왜 안 되나요?
수수께끼는 다음과 같이 깊어집니다. 우리는 window.console.log.apply와 window.console.log.call이 특이하게 없다는 점을 고려합니다. 이러한 불일치는 호스트 객체로서 콘솔 객체의 고유한 특성, 즉 ECMAScript 대응 항목과 같이 Object에서 상속하지 않거나 Function에서 메소드를 파생하지 않기로 자랑스럽게 선택하는 특성에서 비롯됩니다. 아쉽게도 IE9의 불완전한 DOM 개체 적합성 수용으로 인해 개발자 도구는 고립된 상태에 놓이게 되었고 동료들에게 부여된 것과 동일한 축복을 빼앗겼습니다.
A Ray of Hope: Bind to the Rescue
이러한 제한에도 불구하고 Function.prototype.bind의 깊은 곳에서 희미한 희망이 솟아납니다. 이 마법의 주문을 통해 우리는 콘솔 메서드와 Function.prototype 메서드 사이의 조화로운 유대를 형성할 수 있습니다. 다음과 같은 속임수를 보십시오:
var log = Function.prototype.bind.call(console.log, console); log.apply(console, ["this", "is", "a", "test"]); //-> "thisisatest"
여기에 Function.prototype 마법을 사용하여 콘솔 메서드를 호출하는 기술이 있습니다.
위 내용은 IE9에서 개발자 도구가 열려 있을 때만 window.console.log를 사용할 수 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!