2011-06-13 2 views
1

Object comparison in JavaScript에서 수행 한 것과 비슷한 Object.prototype.equals에 함수를 할당하려고합니다. 이 기능은 완벽하게 작동,하지만 난에 대한 jQuery를 가질 때마다, 내가 좋아하는 오류를 얻을 :Object.prototype을 지정하면 jQuery에서 문제가 발생합니다.

name.replace jQuery를-1.6.1.js에 선 6490 참조 함수

없습니다.

왜 이런 일이 일어날 수 있는지 알고 있습니까?

+0

으로 속성을 설정할 수 있습니다, 저도 같은 문제를 얻을. –

+0

http://stackoverflow.com/questions/1827458/prototyping-object-in-javascript-breaks-jquery –

답변

5

원숭이 패치 Object.prototype하지 마십시오.

Object.prototype.replace = "lol"; 

for (var i in { "bar": 42 }) { 
    alert(i); 
} 
// "bar" 
// "replace" :(

는 기본적으로 for ... in 루프는 프로토 타입에 정의 포함한 객체 의 모든 속성을 반복. 그렇기 때문에 Object.prototype을 확장하거나 변경하는 것은 나쁜 습관입니다.

어떤 사람들은 "원숭이 패치 , String, Function, ..."까지도 가지 않습니다.

Object.prototype으로 엉망으로 처리해야합니다. 나머지 원시 프로토 타입은 스타일 선택입니다.

Object에 함수를 정의하십시오.

Object.replace = function() { ... }; 

var o = Object.replace(p); 

은 ES5 : ECMAScript를 5

당신은 그냥 사실 반환 함수 본문을 제거하더라도 비 열거

Object.defineProperty(Object.prototype, "replace", { 
    value: function() { } 
}); 
+0

그래, 난 그냥 독립형 기능을 만들 거라고 생각해. –

관련 문제