因此,以下代码警告错误两次:
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),则代码会按预期警告两次.有人知道为什么吗?
我正在读"可维护的javascript"这本书.在书中,作者谈到了框架,需要帮助才能理解这意味着什么.
在帧之间来回传递数组是 JavaScript中最初的跨框架问题之一.开发人员很快发现,在这些情况下,instanceof Array并不总能产生适当的结果.如前所述,每个帧都有自己的Array构造函数,因此一个帧中的实例在另一个帧中无法识别.Douglas Crockford首先建议执行一些鸭子打字,测试sort()方法的存在:
// Duck typing arrays
function isArray(value) {
return typeof value.sort === "function";
}
Run Code Online (Sandbox Code Playgroud) javascript ×2