我在ASP.NET webforms中使用Crystal Reports來顯示一些報告文件。該框架生成一些用於UI邏輯的JavaScript。修改Array.prototype導致其他js庫中的錯誤
取消精縮版(使用美化):http://pastebin.com/uryjRZF7
困擾我的事情是,當我做任何修改到數組原型,上面的腳本拋出2個錯誤。它看起來像這樣在Firebug(是的,我知道,但在這一點上,我不能未再壓縮它):
TypeError: E[D].getHTML is not a function
...conWidget("iconMenu_icon_"+C,B,IconMenuWidget_iconClickCB,K,F,J,G,P,L,A,N,false)...
TypeError: A.layer is null
...conWidget("iconMenu_icon_"+C,B,IconMenuWidget_iconClickCB,K,F,J,G,P,L,A,N,false)...
例如,這將使中出現錯誤:
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中不起作用。
有沒有辦法讓一個不可枚舉的財產沒有它?
@ Qantas94Heavy你是什麼意思的非過濾? – Johan
查看@ HMR的答案,這就是我的意思。由於你改變了你的問題,它現在似乎是[ES5中的Object.defineProperty?](http://stackoverflow.com/questions/3830800/object-defineproperty-in-es5):( –
@ Qantas94Heavy那麼,其中一部分是,但我不會稱之爲笨蛋 – Johan