이번에는 웹 개발에서 속성을 감지하는 방법과 웹 개발에서 속성을 감지할 때 주의사항에 대해 설명하겠습니다. 다음은 실제 사례입니다.
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 중국어 웹사이트의 다른 관련 기사를 주목하세요!
추천 도서:
위 내용은 웹 개발에서 속성을 감지하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!