JS 객체의 등록 정보를 판단하는 두 가지 방법

712 단어
두 가지 방식이지만 약간의 차이가 있다
1, in 연산자
 
  
var obj = {name:'jack'};
alert('name' in obj); // --> true
alert('toString' in obj); // --> true

name이든 원형 체인의 toString이든true로 되돌아오는 것을 볼 수 있습니다.
2, hasOwnProperty 메서드
 
  
var obj = {name:'jack'};
obj.hasOwnProperty('name'); // --> true
obj.hasOwnProperty('toString'); // --> false

원형 체인에서 계승된 속성은hasOwnProperty를 통해 검출되지 않아false로 되돌아옵니다.
주의해야 할 것은 in은 원형 체인의 속성을 검출할 수 있지만 for in은 통상적으로 검출되지 않는다는 것이다.
물론 원형을 다시 쓴 후 for in은 IE9/Firefox/SAfari/Chrome/Opera에서 볼 수 있습니다.for in의 결함

좋은 웹페이지 즐겨찾기