如何获取定义对象的窗口?

时间:2010-02-18 15:30:09

标签: javascript

我想检查某个对象是否是某个内置类的实例。问题是我的检查代码可能不在定义对象的窗口中,因此即使x instanceof Stringfalsex也会返回String。我需要的是x instanceof getWindowOf(x)['String']之类的东西?但是可以定义一个函数,例如getWindowOf

或者,如果我们能够获得JS应用程序的所有窗口,我们可以用另一种方式解决这个问题。 top,递归循环top.frames即将结束,但我们会丢失弹出窗口。

那么什么是解决方案?

请注意,我只是以String为例。我真的想检查像Element这样的类或浏览器中定义的任何其他类。

1 个答案:

答案 0 :(得分:1)

为了避免您使用instanceof运算符时出现的跨框架问题,并且您想检查某个内置对象,我建议您使用Object.prototype.toString方法,它返回一个包含内部[[Class]]属性的字符串,例如假设str是一个String而arr是一个来自其他框架的Array对象:

Object.prototype.toString.call(str); // returns "[object String]"
Object.prototype.toString.call(arr); // returns "[object Array]"
// while
str instanceof String; // is false
arr instanceof Array; // is false
// and 
typeof arr; // "object"

更多信息: