在IE中.
window === top; // false
window === window.window // false
window == top; // true
window == window.window // true
Run Code Online (Sandbox Code Playgroud)
在FF3.6和Chrome稳定版中,这种情况不会发生.
在IE中typeof,.toString,Object.prototype.toString.call都返回相同的两个top&window
这是关系到这个.
谁能告诉我为什么IE不能做严格的平等?
请注意,循环引用不会导致IE和Chrome出现问题.
o = {};
o.o = o;
o === o.o; // true
Run Code Online (Sandbox Code Playgroud)
结果
window.window === window.top; // true
window.window === window.self; // true
Run Code Online (Sandbox Code Playgroud)
所以这window是自己的问题.
for (var i in window) {
if (window.window[i] !== window[i]) {
console.log(i); // external, frames, clipboardData
}
} …Run Code Online (Sandbox Code Playgroud)