我想检查某个对象是否是某个内置类的实例。问题是我的检查代码可能不在定义对象的窗口中,因此即使x instanceof String
是false
,x
也会返回String
。我需要的是x instanceof getWindowOf(x)['String']
之类的东西?但是可以定义一个函数,例如getWindowOf
?
或者,如果我们能够获得JS应用程序的所有窗口,我们可以用另一种方式解决这个问题。 top
,递归循环top.frames
即将结束,但我们会丢失弹出窗口。
那么什么是解决方案?
请注意,我只是以String
为例。我真的想检查像Element
这样的类或浏览器中定义的任何其他类。
答案 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"
更多信息: