различить нодколлекцию от объекта
в своей либе использую функцию type.
сейчас, за неимением лучшего варианта, нодколлекция детектится по св-ву length... есть конечно более надёжные и красивые решения, но для них есть дёготь, в виде ie7-8. В них нодколлекция: [object Object]... В общем если есть умные идеи - поделитесь. |
Object.prototype.toString.call(some) === "[object Array]"Если some - настоящий массив, то будет true. Для массивоподобных структур типа arguments или node collection, возвращаемой, например, document.getElementsbyTagName('div'), будет - false. |
Цитата:
Я кстати не оч понял почему Array? |
Цитата:
|
так нодколлекция ж объект вроде у всех:)
|
а, я решил, что ты от массива хочешь отличить (что обычно бывает нужно :)
|
А всё. Не заметил. Ты не правильно понял. Я хочу коллекцию от нативного объекта отличить. Если она отличается....
|
:)
|
Object.prototype.toString.call(document.getElementsByTagName('div')) == "[object NodeList]" так пробовал? |
В 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)); |
Как вариант.
Есть оператор IN который определяет существует ли свойство у объекта. Возвращает истину или ложь. Допустим у твоих коллекций есть уникальное свойство, которого нет у обьектов. if ("unicumProperty" in testObj) { alert ("'это коллекция потому что у ней есть свойство unicumProperty которого нет у обьектов"); } параноидальный вариант того-же самого. ))))))) //unicumProperty- должно содержать "hello i NodeCollection"; if ("unicumProperty" in testObj) { if (testObj.unicumProperty === "hello i NodeCollection"){ alert ("'это коллекция потому что у ней есть свойство unicumProperty которого нет у обьектов + верное значение"); } } |
Цитата:
сенкс. А вот это вот: Object(obj) === obj вроде как лишнее? |
Цитата:
|
))))
Ну добавь чтоб были. :) |
Цитата:
|
Часовой пояс GMT +3, время: 23:49. |