javascript - 当 myarray 在一个框架中时,为什么 myarray instanceof Array 和 myarray.constructor === Array 都为 false?

标签 javascript

所以下面的代码会发出两次错误警报:

window.onload = function(){
                    alert(window.myframe.myarray instanceof Array);
                    alert(window.myframe.myarray.constructor === Array);
                }

当页面中有一个名为“myframe”的 iframe 包含一个名为“myarray”的数组时。如果数组被移动到主页(而不是 iframe),那么代码会像预期的那样发出两次 true 警报。有谁知道这是为什么吗?

最佳答案

function isArray(o) {
  return Object.prototype.toString.call(o) === '[object Array]';
}

详细解释 here关于为什么 .constructor 因框架而失败。

The problems arise when it comes to scripting in multi-frame DOM environments. In a nutshell, Array objects created within one iframe do not share [[Prototype]]’s with arrays created within another iframe. Their constructors are different objects and so both instanceof and constructor checks fail:

关于javascript - 当 myarray 在一个框架中时,为什么 myarray instanceof Array 和 myarray.constructor === Array 都为 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6473273/

相关文章:

javascript - 从 .html 文件访问 webpack/捆绑的 React 类

javascript - 迭代 react 嵌套对象

javascript - 将 5 位二进制字符串解码回字符

javascript - HTML XPath - 如何根据每个索引的子节点值选择节点?

javascript - 下拉自动滚动到所选数据

具有轻量级标记的 Javascript API 文档框架

javascript - 传递值给父组件 undefined

javascript - 如果使用隔离范围,则无法调用指令链接方法

javascript - 使用 4 轴时值和标签文本中的 Highchart 问题

javascript - 在ajax结果中得到这个