객체에 속성이 있는지 여부를 감지하는 방법에는 여러 가지가 있습니다.
1. in 키워드를 사용하세요
이 방법을 사용하면 객체의 고유 속성과 상속 속성이 있는지 확인할 수 있습니다.
var o={x:1};
"x" in o; //true, 자체 속성이 존재함
"y" in o; //false
"toString" in o; //true, 상속된 속성임
2. 객체의 hasOwnProperty() 메서드를 사용하세요 이 메서드는 자체 속성이 있는지 여부만 확인할 수 있으며 상속된 속성에 대해서는 false를 반환합니다.
var o={x:1};
o.hasOwnProperty("x"); //true, 자체 속성에 x가 있음
o.hasOwnProperty("y") //false, 자체 속성에 y가 없음
o.hasOwnProperty(" toString"); //false, 이는 상속된 속성이지만 자체 소유 속성은 아닙니다.
3. 판단하려면 정의되지 않음을 사용하세요. 자기 소유 재산과 상속 재산 모두 판사로 사용될 수 있습니다.
var o={x:1};
o.x!==undefine; //true
o.y!==undefine; //false
o.toString!==undefine //true
문제가 있습니다 이 메서드를 사용하면 속성 값이 정의되지 않은 경우 다음과 같이 이 메서드는 원하는 결과를 반환할 수 없습니다.
var o={x:undefine};
o.x!==undefine; //false, 속성은 존재하지만 값은 정의되지 않았습니다.
o.y!==undefine; //false
o.toString!==undefine //true
4. 조건문에서 직접 판단
var o={};
if(o.x) o.x =1; //x가 정의되지 않았거나, null, false, " ", 0 또는 NaN이면 그대로 유지됩니다. 변함없이