Javascript.RU

 
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 07.06.2009, 16:19
Интересующийся
Отправить личное сообщение для freebit Посмотреть профиль Найти все сообщения от freebit
 
Регистрация: 17.06.2008
Сообщений: 13

работа с объектами
Ребята, добрый день всем! Подскажите пожалуйста, как проверить объект, созданый литералом т.е
var obj = {};

на пустоту, не используя конструкцию for... in..?

Спасибо!
  #2 (permalink)  
Старый 07.06.2009, 16:24
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Вроде никак не выйдет.
  #3 (permalink)  
Старый 07.06.2009, 16:26
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

а чем for(… in …) не нравится?
  #4 (permalink)  
Старый 07.06.2009, 17:55
Интересующийся
Отправить личное сообщение для freebit Посмотреть профиль Найти все сообщения от freebit
 
Регистрация: 17.06.2008
Сообщений: 13

Конструкцию for(...in...) просто обожаю, но в моем случае слишком громоздко получается.
  #5 (permalink)  
Старый 07.06.2009, 17:59
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Можно функцию написать. Вроде того:
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;
};
  #6 (permalink)  
Старый 07.06.2009, 18:05
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

функция в 2 строчки, что там громоздкого
function isEmpty(obj) {
   for (var key in obj) return false;
   return true;
}
  #7 (permalink)  
Старый 07.06.2009, 18:59
Интересующийся
Отправить личное сообщение для freebit Посмотреть профиль Найти все сообщения от freebit
 
Регистрация: 17.06.2008
Сообщений: 13

Тоесть, если объект пустой, то конструкция for(var key in obj) просто не отработает?
  #8 (permalink)  
Старый 07.06.2009, 19:06
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Ну так это самые основы :-) тело цикла ниразу не выполнится.
  #9 (permalink)  
Старый 07.06.2009, 19:17
Интересующийся
Отправить личное сообщение для freebit Посмотреть профиль Найти все сообщения от freebit
 
Регистрация: 17.06.2008
Сообщений: 13

Вот спасибо!
  #10 (permalink)  
Старый 07.06.2009, 21:34
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

В дополнение, лучше сделать проверку на if (obj.hasOwnProperty(key)), т.к. в Object.prototype может оказаться что-то, учитываемое при итерации for ... in (не имеющее {DontEnum}).
__________________
Тонкости ECMAScript
 



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с выпадающим списком (SELECT) Bogus Общие вопросы Javascript 14 11.03.2013 08:39
работа для знающего java-script rrlqqq Работа 1 03.05.2009 13:24
небольшая работа - интерфейс в ява скрипте :) int9 Работа 0 08.12.2008 22:51
Работа с фреймами Boris_Production Элементы интерфейса 0 23.07.2008 17:01