이 글의 내용은 JavaScript에서 객체가 비어 있는지 확인하는 방법(코드 예시)입니다. 특정 참조 값이 있으므로 도움이 필요한 친구에게 도움이 되길 바랍니다.
배열이 비어 있는지 확인하는 것은 쉽습니다. 길이 메소드를 직접 호출하면 됩니다. 그러면 객체가 비어 있는지 확인하는 방법❓
여기서 비어 있다는 것은 객체에 고유한 속성이 없다는 것을 의미합니다. 두 개의 객체, 하나는 obj이고 다른 하나는 anotherObj
let obj1 = { name: 'oli', child: { name: 'oliver' } } let obj2 = { [Symbol('name')]: 'alice' } let obj3 = Object.defineProperty({}, 'name', { value: 'alice', enumerable: false }) let obj4 = Object.create(null) // 我们需要一个函数,判断是否不含自有属性 isEmpty(obj1) // false isEmpty(obj2) // false isEmpty(obj3) // false isEmpty(obj4) // true
방법 1: Traversal
for-in traversal을 수행하고 hasOwnProperty 메서드를 통해 특정 키가 존재하는지 확인합니다. 이 메서드는 열거 가능 값이 false인 속성을 순회할 수 없습니다
const isEmptyObj = object => { if (!!Object.getOwnPropertySymbols(object).length) { return false } for (const key in object) { if (object.hasOwnProperty(key)) { return false } } return true }
방법 2: 키 메서드
를 사용하세요. 정적 메소드 키를 객체화한 후 키가 반환하는 것은 열거 가능 속성이므로 열거 가능이 false인 속성으로 순회할 수 없습니다
const isEmptyObj = object => { if (!!Object.getOwnPropertySymbols(object).length) { return false } if (Object.keys(object).length) { return false } return true }
방법 3: JSON 메소드
JSON Stringify 메소드를 사용하여 변환하세요. 객체를 문자열로 변환하고 문자열 '{}'과 비교합니다. 이 방법은 통과할 수 없는 속성을 얻을 수 없습니다
const isEmptyObj = object => { if (!!Object.getOwnPropertySymbols(object).length) { return false } return JSON.stringify(object) === '{}' }
방법 4: getOwnPropertyNames 방법
모든 속성 이름을 얻으려면 Object의 getOwnPropertyNames 메서드를 사용하세요. 열거할 수 없는 속성도 얻을 수 있으므로 비교적 괜찮은 방법입니다.
const isEmptyObj = object => { if (!!Object.getOwnPropertySymbols(object).length) { return false } if (!!Object.getOwnPropertyNames(object).length) { return false } return true }
간략화된 버전:
const isEmptyObj = object => !Object.getOwnPropertySymbols(object).length && !Object.getOwnPropertyNames(object).length
JavaScript 비디오 튜토리얼
]위 내용은 JavaScript에서 객체가 비어 있는지 확인하는 방법(코드 예)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!