⭐️ Чтобы узнать больше о передовых технологиях и знаниях, найдите номера подписки.
JS 菌
подписка
Легко проверить, что массив пуст, просто вызовите метод длины напрямую, как потом проверить, пуст ли объект ❓
Пусто здесь означает, что объект не имеет собственных свойств.
Предположим, здесь есть два объекта, один — 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
❗️ После долгих размышлений, чтобы проверить, есть ли у объекта свойство Symbol, можно использовать только метод getOwnPropertySymbols, если есть метод лучше, оставьте сообщение
Способ 1: Траверс
for-in обход и подтверждает, существует ли ключ с помощью метода 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: метод ключей
Используйте ключи статического метода Object, а затем оцените длину.Keys возвращает свои собственные перечисляемые свойства, поэтому то же самое нельзя пройти к свойствам, чье перечисление имеет значение 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
Используйте метод getOwnPropertyNames объекта Object, чтобы получить все имена свойств, чтобы можно было получить даже неперечислимые свойства, что является приемлемым методом.
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
Если есть лучший способ, пожалуйста, оставьте сообщение
Пожалуйста, обратите внимание на мой номер подписки, время от времени я буду выкладывать технические статьи о JS, только говорить о технологиях, а не сплетничать 😊
EOF