6

为了在窗口之间传递数据,我通过该window.open方法打开新窗口并将新打开的窗口的属性设置为对象。这使我不仅可以传递数据,还可以共享变量的实例,这意味着如果我在一个窗口上修改对象或其任何派生属性,它会在所有窗口上修改它。

然而,问题是 instanceof 操作符的某些事情变得非常有趣。

当我做

typeof m
m instanceof Object

第一行返回"object",第二行返回false

我特别需要 instanceof 运算符来检查数组和对象之间的关系。

这是一个示例(警告:尝试在页面加载时打开一个窗口,因此弹出窗口阻止程序可能会阻止它)。http://jsfiddle.net/Chakra/mxf2P/1/

4

1 回答 1

6

由于您的窗口Object和源窗口Object不是一回事,因此其中一个的实例不会是另一个的实例。您可以使用Object.prototype.toString来区分对象和数组:

if(Object.prototype.toString.call(m) === '[object Array]') {
    // It's an array
} else {
    // It's not
}

如果可用,您也可以使用Array.isArray

这是一个演示。(顺便说一下,它使用一个<iframe>而不是弹出窗口。)

于 2013-01-18T02:28:08.160 回答