]
결과는 다양합니다.
[개체 개체]IE6
[개체 개체]IE8
[개체 창]firefox3.6
[개체 창]opera10
[object DOMWindow]safai4.04
[object global]chrome5.0.3.22
Heheming이 어떻게 결정하는지 살펴보고 setInterval이라는 속성이 있는지 확인하세요. 너무 엄격해 보이지는 않지만 이보다 더 엄격할 수는 없습니다. IE에서는 일반화된 함수가 함수인지 여부를 판단하는 것이 불가능하기 때문입니다. Object.prototype.toString.call은 항상 [object Object]를 인쇄합니다. 이름 속성이 없습니다. 복사하기가 너무 쉽기 때문에 폐기되었습니다.
절망적으로 속성을 하나씩 확인하여 특별한 속성이 있는지 확인해보세요. 마침내 무한 루프에서 자신을 참조하는 동일한 이름의 창 속성이 있다는 것을 발견했습니다. 이는 IE에서는 여전히 문제입니다.
외부 J를 도입해야 하는 경우 새로 고쳐야 합니다. 실행
]
[Ctrl A 모두 선택 참고: 필요한 경우
외부 Js 실행하려면 새로고침해야 합니다
]
[Ctrl A 모두 선택 참고:
외부 J를 도입해야 하는 경우,
코드를 복사하세요.
var isWindow = function(obj){
return obj.window === obj.window.window
}
코드 복사
코드는 다음과 같습니다.
function isWindow( obj ){
if(typeof obj !== "object") return false;//객체여야 함
var Expando = "dom" (new Date-0) //임의 변수 이름 생성
//전역 구문 분석 코드 , IE eval은 원래 범위에만 유효합니다
//자세한 내용은 http://www.javaeye.com/topic/519098을 참조하세요
//또한 HTML5 엄격 모드에서는 eval과 with가 금지되므로 그것들을 버려라!
var js = document.createElement("script");
var head = document.getElementsByTagName("head")[0];
head.insertBefore(js,head.firstChild)
js.text = Expando " = {};"
head.removeChild(js)
return window[expando] === obj[expando] <script>alert(Object.prototype.toString.call(window))</script>} <script>alert(window === window.window)</script>isWindow(window) <script>alert(window == window.window)</script><script>alert(window.window === window.window.window)</script>