>  기사  >  웹 프론트엔드  >  웹 개발에서 속성을 감지하는 방법

웹 개발에서 속성을 감지하는 방법

php中世界最好的语言
php中世界最好的语言원래의
2018-06-04 10:21:361605검색

이번에는 웹 개발에서 속성을 감지하는 방법과 웹 개발에서 속성을 감지할 때 주의사항에 대해 설명하겠습니다. 다음은 실제 사례입니다.

null(및 정의되지 않음)이 사용되는 시나리오는 다음과 같이 object에 속성이 존재하는지 확인할 때입니다.

// 不好的写法:检测假值if (object[propertyName]) {}// 不好的写法:和null相比较if (object[propertyName] != null) {}// 不好的写法:和undefined比较if (object[propertyName] != undefined) {}

위 코드의 각 판단은 실제로 주어진 이름으로 확인됩니다. 주어진 이름이 가리키는 속성이 존재하는지 판단하는 대신 속성 값이 0, ""(빈 문자열 ), false, null 및 정의되지 않음과 같은 거짓 값인 경우 결과가 잘못되기 때문입니다. 결국 이는 해당 부동산의 법적 가치입니다. 예를 들어 속성이 숫자를 기록하는 경우 값은 0일 수 있습니다. 이 경우 위 코드의 첫 번째 판단에서 오류가 발생합니다. 비유하자면 속성 값이 null이거나 정의되지 않은 경우 세 가지 판단 모두 오류가 발생합니다.

속성이 존재하는지 확인하는 가장 좋은 방법은 in연산자를 사용하는 것입니다. in 연산자는 속성 값을 읽는 대신 속성이 존재하는지 여부만 확인합니다. 이렇게 하면 이 섹션 앞부분에서 언급한 모호한 설명을 피할 수 있습니다. in 연산자는 인스턴스 개체의 속성이 존재하거나 개체의 프로토타입에서 을 상속받은 경우 true를 반환합니다. 예:

var object = {  count: 0,  related: null};// 好的写法if ("count" in object) {  // 这里的代码会执行}// 不好的写法:检测假值if (object["count"]) {  // 这里的代码不会执行}// 好的写法if ("related" in object) {  // 这里的代码会执行}// 好的写法if (object["related"] != null) {  // 这里的代码不会执行}

인스턴스 객체의 특정 속성이 존재하는지 여부만 확인하려면 hasOwnProperty() 메서드를 사용하세요. Object에서 상속받은 모든 JS 객체에는 이 속성이 인스턴스에 있으면 true를 반환하는 이 메서드가 있습니다. 이 속성이 프로토타입에만 있으면 false를 반환합니다. IE8 및 이전 버전의 IE에서는 DOM 객체가 Object에서 상속되지 않으므로 이 메서드가 포함되지 않습니다. 즉, hasOwnProperty() 메서드를 호출하기 전에 DOM 객체가 존재하는지 확인해야 합니다. 객체가 DOM이 아니라는 것을 이미 알고 있는 경우 이 단계를 생략할 수 있습니다.

// 对于所有非DOM对象来说,这是好的写法if (object.hasOwnProperty("related")) {  // 执行这里的代码}// 如果你不确定是否为DOM对象,则这样来写if ("hasOwnProperty" in object && object.hasOwnProperty("related")) {  // 执行这里的代码}

IE8 및 이전 버전의 IE 상황으로 인해 인스턴스 객체의 속성이 존재하는지 확인할 때 in 연산자를 사용하는 것을 선호합니다. hasOwnProperty()는 인스턴스 속성을 확인해야 하는 경우에만 사용됩니다. 속성의 존재 여부를 확인해야 할 때마다 in 연산자나 hasOwnProperty()를 사용하세요. 이렇게 하면 많은 버그를 피할 수 있습니다.

이 기사의 사례를 읽은 후 방법을 마스터했다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!

추천 도서:

웹 개발에서 null 비교를 피하는 방법

웹 개발에서 배열을 감지하는 방법

위 내용은 웹 개발에서 속성을 감지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.