Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #51 (permalink)  
Старый 22.02.2012, 23:47
Профессор
Посмотреть профиль Найти все сообщения от Mахmaxmaximus
 
Регистрация: 22.02.2012
Сообщений: 163

Сообщение от vasa_c
И задача эта не такая простая как с первого взгляда кажется.
Я читая то сообщение ответил что прошу пример. Разве не понятно что повтор того сообщения новой информации мне не принесет? Я ЧИТАЯ то твое сообщение попросил привести примеры.

Приведи пример где что-то работает адово и неправильно? А то я что-то вообще не понимаю о чем ты? Может тебе прсто стоит почитать учебник для начинающий если тебе что-то кажется трудным? Или спецификацию. А лучше напиши мне я тебе на вопросы отвечу и побьясню что как работает чтобы не казалось адовым. я же помочь хочу. Если ты не пришлешь пример с кодом где у тебя возникают проблемы и адовый дискомфорт, то будем считать что это просто твоя нубоватость его вызывает).
И тебе просто нужно подучиться. И набраться опыта.


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

Mахmaxmaximus, твой съезд на личности не добавляет авторитета твоим сообщениям.

Попробую пояснить в последний раз - я понимаю как и что работает, безо всяких объяснений. Меня не до конца нравится как именно это работает.
Ответить с цитированием
  #53 (permalink)  
Старый 23.02.2012, 14:39
Профессор
Посмотреть профиль Найти все сообщения от Mахmaxmaximus
 
Регистрация: 22.02.2012
Сообщений: 163

Сообщение от vasa_c
Попробую пояснить в последний раз - я понимаю как и что работает, безо всяких объяснений. Меня не до конца нравится как именно это работает.
как тут безличности если ты - личность, и у тебя проблемы.
Они могут быть связанными с твоим незнанием с нубоватостью!
Либо с языком.

Вот я и просил пример кода чтобы обьяснить что да как.
Просто у меня адовости же нет, я бы и хотел чтобы у тебя её не было.
Ответить с цитированием
  #54 (permalink)  
Старый 23.02.2012, 14:53
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Проблемы есть у всех, но мы здесь обсуждаем не их, а typeof.

"Адовость" в том, что чтобы написать простую функцию требуется множество выкрутасов с последующей отладкой во всех браузерах.

Попробую ещё раз описать её.
Нужно проитерировать произвольное входное значение.
Для этого нужно соотнести её с одним из трёх семантически различных типов:

1. грубо говоря "словарь": то что итерировать нужно через for..in.

2. список (Array, arguments, HTMLCollection ...), перебираемый последовательным доступом.

3. скаляр, сюда же нужно отнести function, DOMElement, TextNode и другие подобные структуры.
хотя они и являются объектами, но работать нужно с их значением, а не набором привязанных свойств.

вот если приведёшь реализацию функции, в которой это всё будет сделано просто, элегантно и органично с языком, то я заберу все свои слова назад.
Ответить с цитированием
  #55 (permalink)  
Старый 23.02.2012, 15:48
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

function each(collection, callback, scope) {
    var key;

    for (key in collection) {
        if (collection.hasOwnProperty(key) {
            callback.call(scope, collection[key], key, collection);
        }
    }
}


Кроссбраузерность 100%. Я потратил на написание меньше минуты.
Ответить с цитированием
  #56 (permalink)  
Старый 23.02.2012, 16:58
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Первое же на вскидку, что могу сказать:

1. Chrome, Opera и Safari в HTMLCollection переберут и свойство length

2. В IE7 у HTMLCollection вообще нет метода hasOwnProperty() - вылетит с ошибкой.

3. 3-й пункт моего примера не обрабатывается.

4. Любое добавленное к массиву или коллекции свойство попадёт в перебор.
Пример - перебор jQuery-объекта.
Ответить с цитированием
  #57 (permalink)  
Старый 23.02.2012, 17:35
Профессор
Посмотреть профиль Найти все сообщения от Mахmaxmaximus
 
Регистрация: 22.02.2012
Сообщений: 163

function each(collection, callback, scope) {
    var key;

    for (key in collection) if (collection.hasOwnProperty(key) {
         
            callback.call(scope, collection[key], key, collection);
      
    }
}



1. Chrome, Opera и Safari в HTMLCollection переберут и свойство length
обманываете

2. В IE7 у HTMLCollection вообще нет метода hasOwnProperty() - вылетит с ошибкой.
это как то связано с javascript?

4. Любое добавленное к массиву или коллекции свойство попадёт в перебор.
Пример - перебор jQuery-объекта.

так ты это и хотел, а если нет, то отвечу так:

есть универсальный итератор, я его выше показал, если нужен персональный итератор для определенного класса сущностей то сделай его.

Последний раз редактировалось Mахmaxmaximus, 23.02.2012 в 17:37.
Ответить с цитированием
  #58 (permalink)  
Старый 23.02.2012, 17:42
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Добавлять свойства к уже определенным ранее объектам это признак дурного тона, а если Вам было необходимо расширить функционал уже нативных коллекций, тогда следовало бы создать наследника и использовать его в своих нуждах. В таком случае пользовательские свойства не попадают под итерацию.

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

Сообщение от Mахmaxmaximus
4. Любое добавленное к массиву или коллекции свойство попадёт в перебор.
Пример - перебор jQuery-объекта.
так ты это и хотел
Вот пример о чем вообще идет речь.
var arr = [1,2,3]; 
arr.foo = 'bar'; 
for( var  prop in arr ) { 
    arr.hasOwnProperty( prop ) && console.log( prop, arr[prop] ) ;
}


Для перебора нужно использовать, то что для это предназначено.
Ответить с цитированием
  #60 (permalink)  
Старый 23.02.2012, 17:49
Аватар для DreamTheater
Профессор
Отправить личное сообщение для DreamTheater Посмотреть профиль Найти все сообщения от DreamTheater
 
Регистрация: 15.02.2011
Сообщений: 471

Сообщение от nikita.mmf Посмотреть сообщение
Вот пример о чем вообще идет речь.
var arr = [1,2,3]; 
arr.foo = 'bar'; 
for( var  prop in arr ) { 
    arr.hasOwnProperty( prop ) && console.log( prop, arr[prop] ) ;
}


Для перебора нужно использовать, то что для это предназначено.
Массивы перебираются через
for (var i = 0; i < arr.length; i++)
, можно ведь написать так?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
непонятки со 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