Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.06.2011, 10:53
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

Opera: отличить массив от объекта мимикрирующего под массив
var PreudoArray= function(){}
PseudoArray.prototype= Array.prototype
var list1= new PseudoArray
var list2= new Array


Вопрос: есть ли достаточно надёжный способ отличить первый от второго в Опере?

В остальных браузерах помогает проверка вида:
({}).toString.call( list1 ) === ({}).toString.call( list2 )
__________________
.ня
Ответить с цитированием
  #2 (permalink)  
Старый 27.06.2011, 12:05
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Наполнять и смотреть меняется ли length:
var PseudoArray = function() {};
PseudoArray.prototype = Array.prototype;
var list1 = new PseudoArray;
var list2 = new Array;
list1[0] = null;
list2[0] = null;
alert(list1.length == list2.length);

?
Ответить с цитированием
  #3 (permalink)  
Старый 27.06.2011, 12:19
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

так в опере length меняется в обоих случаях %-)
__________________
.ня
Ответить с цитированием
  #4 (permalink)  
Старый 27.06.2011, 12:35
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

tenshi, у тебя какая версия оперы?
Ответить с цитированием
  #5 (permalink)  
Старый 27.06.2011, 15:02
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

хотя, да, при прямом присвоении не увеличивает. а вот например через функцию push увеличивает.

в любом случае менять объект - это как-то криво
__________________
.ня
Ответить с цитированием
  #6 (permalink)  
Старый 27.06.2011, 15:02
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

хотя, да, при прямом присвоении не увеличивает. а вот например через функцию push увеличивает.

в любом случае менять объект - это как-то криво
__________________
.ня
Ответить с цитированием
  #7 (permalink)  
Старый 27.06.2011, 16:14
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Это ещё не криво... Just use it)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #8 (permalink)  
Старый 27.06.2011, 17:03
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от tenshi
в любом случае менять объект - это как-то криво
нужно аккуратно возвращать все как было, хотя да, как-то все равно немного криво.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу вытащить массив из объекта по указателю из самого объекта bunta Общие вопросы Javascript 3 09.09.2010 18:44
Как отличить массив от объекта Ilyan Общие вопросы Javascript 3 20.04.2010 23:08
Как писать скрипты под Opera? ucsus (X)HTML/CSS 2 15.04.2009 13:07