работа с объектами
Ребята, добрый день всем! Подскажите пожалуйста, как проверить объект, созданый литералом т.е
var obj = {}; на пустоту, не используя конструкцию for... in..? Спасибо! |
Вроде никак не выйдет.
|
а чем for(… in …) не нравится?
|
Конструкцию for(...in...) просто обожаю, но в моем случае слишком громоздко получается.
|
Можно функцию написать. Вроде того:
Object.isBlank = function(obj) { if (obj == null) return false; if (obj instanceof Array || typeof obj == 'string') return !obj.length; var blank = new obj.constructor(); for (var key in obj) if (!(key in blank) || obj[key] !== blank[key]) return false; return true; }; |
функция в 2 строчки, что там громоздкого
function isEmpty(obj) { for (var key in obj) return false; return true; } |
Тоесть, если объект пустой, то конструкция for(var key in obj) просто не отработает?
|
Ну так это самые основы :-) тело цикла ниразу не выполнится.
|
Вот спасибо!
|
В дополнение, лучше сделать проверку на if (obj.hasOwnProperty(key)), т.к. в Object.prototype может оказаться что-то, учитываемое при итерации for ... in (не имеющее {DontEnum}).
|
Часовой пояс GMT +3, время: 08:20. |