如果我想在firefox中使用我的程序中声明的所有函数和变量,我只需迭代'window'对象。例如,如果我有var a = function(){};我可以使用a();或window.a();在Firefox中,但不在IE中。我有函数迭代窗口对象并编写在程序中声明的所有函数名称:
for (smthng in window) {
document.write(smthng);
}
在FF中工作,在IE中有一些东西,但我之前没有声明。有什么想法吗?
答案 0 :(得分:2)
这是一个众所周知的JScript错误。
在IE中,全局变量不是可枚举的,除非您明确将它们定义为窗口对象的属性。
var a = function () {}; // It won't be enumerated in a `for...in` loop
window.b = function () {}; // It will be enumerated in a `for...in` loop
以上两种方式非常相似,唯一的区别是使用a
语句声明了var
,这使得它不可删除,而b
可以是“{ {1}}”。
deleted
答案 1 :(得分:0)