ecmascript正则表达式语法-实例化

在浏览器中,我们的脚本可能需要在多个窗口之间进行交互。 多个窗口意味着多个全局环境,不同的全局环境具有不同的全局对象,因此具有不同的外部类型构造函数。 这可能会导致一些问题。 例如,表达式 [] instanceof window.frames[0].Array 返回 false,因为 Array.prototype !== window.frames[0].Array.prototype 并且字段继承自前者。

起初,您可能认为这没有意义,但是当您开始在脚本中处理多个框架或多个窗口并通过函数将对象从一个窗口传递到另一个窗口时,这是一个有效且强大的主题。 。 例如,您实际上可以使用 Array.isArray(myObj) 或 Object.prototype.toString.call(myObj) === "[object Array]" 安全地测试传递的对象是否是字段。

例如,要检查节点是否是另一个窗口中的 SVGElementecmascript正则表达式语法,您可以使用 myNode instanceof myNode.ownerDocument.defaultView.SVGElement

注意:在代码中使用 XPCOM instanceof 有特殊效果:obj instanceof xpcomInterface(例如 Components.interfaces.nsIFile)调用 obj.QueryInterface(xpcomInterface),如果查询套接字执行成功,则返回 true。 此调用的副作用是,在成功进行 instanceof 测试后,您可以使用 obj 上的 xpcomInterface 属性。 与标准 JavaScript 全局变量不同ecmascript正则表达式语法,即使 obj 来自不同的作用域,obj instanceof xpcomInterface 也会按预期工作。