Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #61 (permalink)  
Старый 23.02.2012, 17:57
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Сообщение от DreamTheater Посмотреть сообщение
Массивы перебираются через
for (var i = 0; i < arr.length; i++)
, можно ведь написать так?
Так нужно написать, об этом ведь и идет речь. Каждый перебор должен вестись согласно типу. Для массивов и массивоподобных( arguments, htmlcollection ) объектов через for( ; ; ), а для объектов через for in.
Ответить с цитированием
  #62 (permalink)  
Старый 23.02.2012, 18:09
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от nikita.mmf Посмотреть сообщение
Так нужно написать, об этом ведь и идет речь. Каждый перебор должен вестись согласно типу. Для массивов и массивоподобных( arguments, htmlcollection ) объектов через for( ; ; ), а для объектов через for in.
Ну вот, а чувак похоже хочет чтобы все решалось применением метода сделатьВсеХорошо().
Ответить с цитированием
  #63 (permalink)  
Старый 23.02.2012, 18:20
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

DreamTheater,
просто вы привели код с for in, в который по сути необходимо добавить проверку типов.
Ответить с цитированием
  #64 (permalink)  
Старый 23.02.2012, 18:28
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от nikita.mmf Посмотреть сообщение
DreamTheater,
просто вы привели код с for in, в который по сути необходимо добавить проверку типов.
Ответить с цитированием
  #65 (permalink)  
Старый 23.02.2012, 18:50
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Сообщение от Mахmaxmaximus
1. Chrome, Opera и Safari в HTMLCollection переберут и свойство length
обманываете
вестимо так!
Ответить с цитированием
  #66 (permalink)  
Старый 23.02.2012, 18:52
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Сообщение от DreamTheater
Ну вот, а чувак похоже хочет чтобы все решалось применением метода сделатьВсеХорошо().
я хочу перебирать словари через for..in, а списки через for (;, но для этого сначала нужно определить чем является полученная структура. И typeof нам в этом не помогает.
Ответить с цитированием
  #67 (permalink)  
Старый 23.02.2012, 18:55
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Сообщение от Mахmaxmaximus
2. В IE7 у HTMLCollection вообще нет метода hasOwnProperty() - вылетит с ошибкой.
это как то связано с javascript?
это связано с тем, что универсальный кроссбраузерный пример, написанный за минуту не работает.
Ответить с цитированием
  #68 (permalink)  
Старый 23.02.2012, 19:07
Профессор
Посмотреть профиль Найти все сообщения от Mахmaxmaximus
 
Регистрация: 22.02.2012
Сообщений: 163

Сообщение от vasa_c
И typeof нам в этом не помогает.
конечно, потому что этот оператор не для этого, с чего бы ему помогать
Тебе поможет секретное свойство предназначенное для этого)

Последний раз редактировалось Mахmaxmaximus, 23.02.2012 в 19:29.
Ответить с цитированием
  #69 (permalink)  
Старый 23.02.2012, 19:22
Профессор
Посмотреть профиль Найти все сообщения от Mахmaxmaximus
 
Регистрация: 22.02.2012
Сообщений: 163

Я еще раз всем обьясню:

1)есть типы данных: обьект, строка, число, булиан, андефайнд, function. ВСЕ!

2) тип данных "Обьект" в свою очередь делятся на свои типы(КЛАССЫ):
Массивы, DOM элементы, просто обьекты(словари) , jQuery обьекты и.т.п.

typeof определяет тип данных! обьект не обьект строка не строка, число ли не число.


если ты хочешь оператор который бы возвращал класс обьекта, например "Array" или "DOMelement" то для этого есть специальное волшебное свойство, тебе нужно просто обратится к нему, к свойству в котором лежит строчка с названием класса обьекта.

alert([1,2,3,4,5] .constructor.name)

alert({a:1}  .constructor.name)

alert(document.createElement('a') .constructor.name)

при чем всё выше по типу данных - обьекты.
видишь как все просто)) и операторы не нужны XD

Последний раз редактировалось Mахmaxmaximus, 23.02.2012 в 20:07.
Ответить с цитированием
  #70 (permalink)  
Старый 26.02.2012, 14:34
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Прошу прощения за отсутствие, надеюсь не скучали

Сообщение от Mахmaxmaximus
Я еще раз всем обьясню:
Максмаксмаксимус, ты вообще умеешь вести дискуссию без менторского тона?

Цитата:
для этого есть специальное волшебное свойство, тебе нужно просто обратится к нему, к свойству в котором лежит строчка с названием класса обьекта.
В каком пункте нашего любимого ECMA прописано, что данное свойство является стандартом и истинной в последней инстанции для определения класса?
И почему браузеры кладут на этот пункт стандарта?

console.log(document.getElementsByTagName("script").constructor.name);
console.log(document.createElement("div").constructor.name);
console.log(document.createTextNode("text").constructor.name);


Firefox 10.0.2, Ubuntu:
Цитата:
undefined
undefined
undefined
Opera 10.62
Цитата:
Object
Function.prototype
Object
IE под рукой нет, но что-то гложат меня сомнения, что там всё лучше.
Насколько помню, там у DOM-объектов раньше вообще конструкторов и прототипов не было.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
непонятки со scroll Арсений Events/DOM/Window 1 25.08.2010 13:15
непонятки jquery.nyroModal giGnet jQuery 2 09.08.2010 22:31
Непонятки с GET Большой Javascript под браузер 8 09.08.2010 19:17
Непонятки с регэкспом... mexoboy Общие вопросы Javascript 3 09.03.2010 18:09
Javascript quiz · Perfection kills Octane Оффтопик 49 16.02.2010 12:46