我在ASP.NET网络表单中使用Crystal Reports来显示一些报告文件。该框架生成一些用于UI逻辑的javascript。
未缩小的版本(使用美化):http://pastebin.com/uryjRZF7
困扰我的是,只要我对数组原型进行任何修改,上面的脚本就会抛出2个错误。它看起来像是在萤火虫中(是的,我知道,但我现在无法将其缩小):
TypeError:E [D] .getHTML不是函数
... conWidget( “iconMenu_icon _” + C,B,IconMenuWidget_iconClickCB,K,F,J,G,P,L,A,N,假)...
TypeError:A.layer为null
... conWidget( “iconMenu_icon _” + C,B,IconMenuWidget_iconClickCB,K,F,J,G,P,L,A,N,假)...
例如,这会使错误出现:
if(!Array.prototype.somethingVeryUnique) {
Array.prototype.somethingVeryUnique = function () {
return this.length;
};
}
这怎么可能干扰自动生成的文件?!
更新
Object.defineProperty(Array.prototype, "somethingUnique", {
enumerable: false,
writable: true,
value: function () {
}
});
如果我将其设为不可枚举,则可行。但是,object.defineProperty
在我需要支持的IE7中不起作用。
如果没有它,有没有办法制作一个不可枚举的属性?
答案 0 :(得分:1)
他们可能正在使用for(something in array)
,如果您未选中array.hasOwnProperty(something);
最佳是not extend native JS objects,则会显示添加原型的成员。