Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Object, Array или Node ? (https://javascript.ru/forum/misc/6734-object-array-ili-node.html)

PeaceCoder 18.12.2009 18:32

Object, Array или Node ?
 
Никто не знает сабж короткого и быстро определить? или вообще кто знает как определить? Вопрос к гуру? Возникла идея, хочу проверить имеет ли смысл. как определить? как решают?

e1f 18.12.2009 18:38

([]).constructor === Array // true
({}).constructor === Object // true


для Node можно воспользоваться каким-то свойством, например jQuery поступает просто:
if (el.nodeType) //element

Kolyaj 18.12.2009 18:40

Объект понятие растяжимое. Для Array
function isArray(obj) {
    return Object.prototype.toString.call(obj) == '[object Array]';
}

e1f 18.12.2009 18:57

Kolyaj, а чем плох ([]).constructor === Array ? Можно пример, когда не совпадает?

Kolyaj 18.12.2009 19:03

Цитата:

Сообщение от e1f
Можно пример, когда не совпадает?

Когда массив из другого окна/фрейма придёт.

e1f 18.12.2009 19:06

Спасибо :) Да, видимо этот метод лучше того, что я привел.

UPD Главное, чтобы Object.prototype.toString никто не переопределил ;)

PeaceCoder 18.12.2009 19:24

а это уже легко проверяется. изза этого кстати этот метод ненадежен... есть ли надежней методы?

e1f 18.12.2009 19:37

А смысл? Если уже начали переопределять, то можно и undefined = true установить, и прочий бред написать. В конце концов, можно реализовать настолько враждебное окружение, что любой скрипт перестанет работать. Так что не стоит беспокоится о надежности подобного плана.

PeaceCoder 18.12.2009 20:04

а почему сразу нестабильность? могут переписать функция которая будет переводить реально обьект в строку вида JSON...

Kolyaj 18.12.2009 20:08

Для этого есть JSON.stringify. Вообще трогать прототип Object дурной тон и чревато.


Часовой пояс GMT +3, время: 19:44.