Object, Array или Node ?
Никто не знает сабж короткого и быстро определить? или вообще кто знает как определить? Вопрос к гуру? Возникла идея, хочу проверить имеет ли смысл. как определить? как решают?
|
([]).constructor === Array // true ({}).constructor === Object // true для Node можно воспользоваться каким-то свойством, например jQuery поступает просто: if (el.nodeType) //element |
Объект понятие растяжимое. Для Array
function isArray(obj) { return Object.prototype.toString.call(obj) == '[object Array]'; } |
Kolyaj, а чем плох ([]).constructor === Array ? Можно пример, когда не совпадает?
|
Цитата:
|
Спасибо :) Да, видимо этот метод лучше того, что я привел.
UPD Главное, чтобы Object.prototype.toString никто не переопределил ;) |
а это уже легко проверяется. изза этого кстати этот метод ненадежен... есть ли надежней методы?
|
А смысл? Если уже начали переопределять, то можно и undefined = true установить, и прочий бред написать. В конце концов, можно реализовать настолько враждебное окружение, что любой скрипт перестанет работать. Так что не стоит беспокоится о надежности подобного плана.
|
а почему сразу нестабильность? могут переписать функция которая будет переводить реально обьект в строку вида JSON...
|
Для этого есть JSON.stringify. Вообще трогать прототип Object дурной тон и чревато.
|
Часовой пояс GMT +3, время: 19:44. |