Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2011, 19:24
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

различить нодколлекцию от объекта
в своей либе использую функцию type.

сейчас, за неимением лучшего варианта, нодколлекция детектится по св-ву length...

есть конечно более надёжные и красивые решения, но для них есть дёготь, в виде ie7-8. В них нодколлекция: [object Object]...
В общем если есть умные идеи - поделитесь.
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2011, 19:43
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Object.prototype.toString.call(some) === "[object Array]"
Если some - настоящий массив, то будет true. Для массивоподобных структур типа arguments или node collection, возвращаемой, например, document.getElementsbyTagName('div'), будет - false.

Последний раз редактировалось ваый, 05.09.2011 в 19:46.
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2011, 19:47
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Цитата:
Object.prototype.toString.call
Возвращаемое значение разнится от браузера к браузеру.
Я кстати не оч понял почему Array?
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2011, 19:55
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Сообщение от float
Я кстати не оч понял почему Array?
Мы вызываем toString в контексте (.call(some)) той штуки, которую хотим проверить. Для массивов (some = [1, 2, 3], например) toString возвращает строку "[object Array]". Для остальных нет.
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2011, 19:59
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

так нодколлекция ж объект вроде у всех
Ответить с цитированием
  #6 (permalink)  
Старый 05.09.2011, 20:00
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

а, я решил, что ты от массива хочешь отличить (что обычно бывает нужно
Ответить с цитированием
  #7 (permalink)  
Старый 05.09.2011, 20:01
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

А всё. Не заметил. Ты не правильно понял. Я хочу коллекцию от нативного объекта отличить. Если она отличается....
Ответить с цитированием
  #8 (permalink)  
Старый 05.09.2011, 20:01
Аватар для float
Профессор
Отправить личное сообщение для float Посмотреть профиль Найти все сообщения от float
 
Регистрация: 01.07.2010
Сообщений: 387

Ответить с цитированием
  #9 (permalink)  
Старый 05.09.2011, 20:03
Профессор
Отправить личное сообщение для ваый Посмотреть профиль Найти все сообщения от ваый
 
Регистрация: 29.06.2011
Сообщений: 445

Object.prototype.toString.call(document.getElementsByTagName('div')) == "[object NodeList]"

так пробовал?
Ответить с цитированием
  #10 (permalink)  
Старый 05.09.2011, 20:06
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

В IE<9 можно так:
var list = document.getElementsByTagName("*"), array = [];

function isLtIE9DOMObj(obj) {
	return Object(obj) === obj && !(obj instanceof Object);
}

console.log(isLtIE9DOMObj(list));
console.log(isLtIE9DOMObj(array));
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт вычисления координат объекта banderasantonio197555 Events/DOM/Window 4 16.08.2011 17:37
прямая от первого объекта до второго ntro123 Events/DOM/Window 5 09.05.2011 08:41
Как по событию вызвать метод определенного экземпляра объекта jvs jQuery 3 24.12.2009 16:04
Можно ли получить имя экземпляра объекта внутри самого объекта? Ichigeki Общие вопросы Javascript 9 14.11.2008 19:00
Не работает перебор свойств объекта BANick Общие вопросы Javascript 1 16.09.2008 22:46