2010-02-18 44 views
3

我想檢查一個對象是否是某個內置類的實例。問題是我的檢查代碼可能不在定義對象的窗口中,因此即使xStringx instanceof String也會返回false。我需要的是類似x instanceof getWindowOf(x)['String']?但是可以定義一個函數,如getWindowOf?或者,如果我們能夠獲得JS應用程序的所有窗口,我們可以通過其他方式解決這個問題。 top,並通過top.frames遞歸循環接近,但我們會缺少彈出窗口。如何獲取定義對象的窗口?

那麼什麼是解決方案?

請注意,我只是使用String作爲示例。我真的想檢查類似Element或瀏覽器中定義的任何其他類。

+0

什麼是*某些內置類*您想檢查? – CMS 2010-02-18 15:48:58

+0

所有課程。任何類。 – namin 2010-02-18 15:54:07

回答

1

爲了避免這種情況,你與instanceof運營商具有跨框架的問題,只要你想檢查某個內置的對象,我會建議你使用Object.prototype.toString方法,它返回一個包含內部的字符串[[Class]]財產,例如假設str是一個字符串和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" 

更多信息:

+0

但是,那麼您將無法檢查層次結構。假設一個HTMLDivElement是一個元素。 – namin 2010-02-18 15:53:33