Javascript检查变量是否为窗口

mck*_*k89 11 javascript cross-browser

你知道检查变量是否是javascript中的窗口对象的好方法吗?我尝试过:

var variable=window;
Object.prototype.toString.call(variable);
Run Code Online (Sandbox Code Playgroud)

在Firefox中,它会"[object Window]"在IE中返回,"[object Object]"因此这不是正确的方法.你知道一个准确的检查方法吗?

And*_*y E 12

是的,但我需要一种方法来检查每个窗口,而不仅仅是当前的窗口

有几种方法可以做到这一点.最简单的方法是检查窗口对象上的一个或两个已知属性.还有self属性 - 对于每个窗口,您可以检查self属性是否等于窗口对象:

myvar.self == myvar;
window.self == window;
frameElement.contentWindow.self == frameElement.contentWindow;
Run Code Online (Sandbox Code Playgroud)

  • `self`可以被覆盖,通常用作变量名来保留上下文. (2认同)

RAJ*_*HOW 5

在 AngularJS 源代码中找到了这个。一个班轮并击中目标。

return variable && variable.document && variable.location && variable.alert && variable.setInterval;
Run Code Online (Sandbox Code Playgroud)