因此,以下代码警告错误两次:
window.onload = function(){
alert(window.myframe.myarray instanceof Array);
alert(window.myframe.myarray.constructor === Array);
}
Run Code Online (Sandbox Code Playgroud)
名为"myframe"的页面中有一个iframe,其中包含一个名为"myarray"的数组.如果将数组移动到主页面(而不是iframe),则代码会按预期警告两次.有人知道为什么吗?
epa*_*llo 18
function isArray(o) {
return Object.prototype.toString.call(o) === '[object Array]';
}
Run Code Online (Sandbox Code Playgroud)
这里详细解释为什么.constructor失败的框架.
在多帧DOM环境中编写脚本时会出现问题.简而言之,在一个iframe中创建的Array对象不与另一个iframe中创建的数组共享[[Prototype]].它们的构造函数是不同的对象,因此instanceof和constructor检查都失败了:
这两个窗口各自创建自己的全局脚本环境。
一个的 Array 构造函数与另一个不同。
var win2=window.myframe;
alert(win2.myarray instanceof win2.Array); returns true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5795 次 |
| 最近记录: |