我想分配一個函數Object.prototype.equals類似於在Object comparison in JavaScript做什麼。功能完美地工作,但每當我有jQuery的約,我得到這樣的錯誤:分配Object.prototype導致與jQuery的問題
name.replace不是一個函數
在jQuery的1.6.1.js參照線6490。
有誰知道爲什麼會發生這種情況?
我想分配一個函數Object.prototype.equals類似於在Object comparison in JavaScript做什麼。功能完美地工作,但每當我有jQuery的約,我得到這樣的錯誤:分配Object.prototype導致與jQuery的問題
name.replace不是一個函數
在jQuery的1.6.1.js參照線6490。
有誰知道爲什麼會發生這種情況?
不要猴子補丁Object.prototype
。
Object.prototype.replace = "lol";
for (var i in { "bar": 42 }) {
alert(i);
}
// "bar"
// "replace" :(
for ... in
基本上循環遍歷所有屬性中包括對原型定義那些對象。這就是爲什麼延長或改變Object.prototype
是非常糟糕的做法。
有些人還走到儘可能「不要猴子補丁Array
,String
,Function
,...」。
你應該從來沒有與Object.prototype
混亂。其餘的原生原型是一種風格選擇。
定義你的功能Object
。
Object.replace = function() { ... };
var o = Object.replace(p);
ES5:
的ECMAScript 5中,您可以設置屬性,不可枚舉
Object.defineProperty(Object.prototype, "replace", {
value: function() { }
});
是的,我想我只是要創建一個獨立的功能。 – 2011-06-13 15:31:53
即使我刪除函數體中,只是返回true,我得到了同樣的問題。 – 2011-06-13 15:26:19
http://stackoverflow.com/questions/1827458/prototyping-object-in-javascript-breaks-jquery – 2012-09-23 14:11:31