1. String.prototype.camelize BUG
문자열의 카멜 표기법을 반환하는 데 사용되는 메서드입니다. js를 사용하여 요소의 스타일을 제어할 때
가 자주 사용됩니다. 예를 들어
var ss="font-color"
ss=ss.camelize() //fontColor
일반적으로 camelize는 잘 작동하지만 특수 열, 즉 부동 위치 지정 float
var ss="float"
obj.style[ss.camelize()]="right" // 이로 인해 오류가 발생합니다.
분명히 저자는 float의 특수한 경우를 고려하지 않았습니다. 올바른 작성 방법은 다음과 같습니다.
ie: obj.style.styleFloat="right"
ff: obj.style.cssFloat=" right"
2. String.prototype.inspect BUG
inspect 메소드에 버그가 있습니다. 작성자는 교체 메소드를 사용할 때 일반 규칙을 사용하지 않았으므로 일치하는 첫 번째 문자만 교체되었습니다.
올바른 작성 방법은 다음과 같습니다
spect: function() {
return "'" this.replace(/\/g, '\\').replace(/"/g , '\"' ) "'";
}
3. Array.prototype.all BUG
이 메서드는 배열의 모든 요소가 반복 함수를 true로 만들 수 있는지 확인합니다. 모두 만족하면 true를 반환하고, 그렇지 않으면 false를 반환
var f=function(x){return x%2==0} //숫자가 짝수인지 확인
var arr=[2, 4, 6]
alert (arr.all(f)==true) //true 표시
그러나 arr이 비어 있으면 여전히 true를 반환합니다.
var arr=[]
alert(arr . all(f)==true) //true 표시
4. Array.prototype.any BUG
all 메소드와 동일, 여전히 빈 배열에 대해 true를 반환합니다.
5.Array.prototype.Detect 이것이 find 메소드입니다
버그는 아니지만, 원본 코드를 보지 않고 사람들이 오해하고 실수하기 쉽습니다.
반복 함수를 만족하는 첫 번째 요소를 찾아 최종적으로 해당 요소의 값을 반환하는 메소드입니다.
오해 1:
var f=function(x){return x%2==0} //확인 여부 짝수인지
var arr=[1,3,5,7] //모든 홀수의 배열을 의도적으로 정의합니다.
Alert(arr.find(f)==false) //false
//많은 사람들은 find 함수가 조건을 충족하는 요소를 찾을 수 없을 때 false를 반환할 것이라고 잘못 생각합니다. "정의되지 않음"
오해 2:
배열에서 숫자 요소 찾기
var f=function(x){return !isNaN(x) && typeof(x)==="number"}
var arr=[false,"go_rush",0,"Ashun"]
if (arr.find(f)) Alert("배열에 숫자 요소가 포함되어 있습니다.") //사실 이 경고는 실행되지 않습니다.
find 메소드는 조건에 맞는 첫 번째 값을 반환하기 때문입니다. 여기로 돌아오세요: 0. 그러니까...
6. 해시 객체를 처리할 때는 각별히 주의해야 합니다.
var hash={member:1,test:2,ids:3}
alert (hash.member)
alert($H(hash).inspect())
alert($H(hash).toQueryString())
//hash.member는 실제로 존재하지만 .inspect() 및 .toQueryString()은 이를 존재하지 않는 것처럼 처리합니다
마찬가지로 다음 속성도 프로토타입.js와 충돌합니다.
각각, 모두, 임의, 수집, 감지, findAll, grep, 포함, 주입, 호출, 최대, 최소,
파티션, 뽑기, 거부, sortBy, toArray, zip, 검사, 지도, 찾기, 선택, 회원, 항목