Javascript 如何创建没有iFrame的新窗口对象?
如何创建一个新的Javascript 如何创建没有iFrame的新窗口对象?,javascript,Javascript,如何创建一个新的窗口对象,myWindow,该对象独立于窗口(因此修改例如myWindow.Array.prototype不会影响Window.Array.prototype),而不创建 目前我正在做如下工作 function newWindow(){ var myFrame = document.createElement('iframe'), myWindow = undefined; myFrame.style.display = 'none'; myFrame.s
窗口
对象,myWindow
,该对象独立于窗口
(因此修改例如myWindow.Array.prototype
不会影响Window.Array.prototype
),而不创建
目前我正在做如下工作
function newWindow(){
var myFrame = document.createElement('iframe'), myWindow = undefined;
myFrame.style.display = 'none';
myFrame.src = 'javascript:undefined;';
document.body.appendChild(myFrame);
myWindow = myFrame.contentWindow;
document.body.removeChild(myFrame);
return myWindow;
}
最后,我想制作自己的核心对象类型副本并对其进行原型制作。Emm。。。你不能那样做。好。。。您可以调用
窗口。打开,但它将打开一个新窗口。而且。。。你为什么需要这个?看来你走错了路 根据您正在执行的操作,更好的方法可能是创建一个普通数组,然后使用所需的功能扩展该特定数组实例
function augmentArray(a) {
a.purgeAll = function() {a.length = 0;};
}
var myList = [1, 2, 3];
augmentArray(myList);
myList.purgeAll();
因为如果您使用var myArr=function();myArr.prototype=[]代码>,你最终得到了一个几乎断开.length
@shhac的数组-我了解原型。但不清楚你为什么需要一个新窗口。好。。。我无法帮助制作原型,因为我仍然没有机会/需要玩它。但无论如何。创建新窗口的唯一方法是iframe或window.openwindow
对象是您可以访问的所有“全局变量”的父对象,创建新对象意味着它的所有子对象的新副本,但您不能简单地构造它,因为它抛出类型错误:非法构造函数(myWindow=window.open('javascript:undefined;')。close();
使myWindow
成为Window
对象(假设弹出窗口未被阻止)而且不需要
,所以虽然这不是我想要的,但我想它确实回答了问题。或者不破坏..至少使用iFrame,这在chrome中不会发生。我猜是因为垃圾收集器有一个对它的实时引用…+1,谢谢,我可能不得不走这条路,但我希望找到一种不同的方式让我我想要的数据类型,这是目前最接近的,我可以想象,如果我制作了许多“增强”数组,这会占用大量内存。但是,它没有回答有关窗口
对象的问题,因此不能选择它作为正确答案,而另一个答案实际上是正确的,对不起。相关文章: