Потеря некоторых циклов процессора, но достаточно чистая.

апотом JQuery использует карту «UUID» (просто счетчик, который он поддерживает какjQuery.uuid) обойти известные проблемы утечки памяти, которые возникают у браузеров, когда вы присоединяете свойство к тегу в DOM из Javascript. Вместо этого JQuery использует$.data(tag, name, value) хранить данные на карте, отключенной от uuid (ключ, который можно определить, проверивtag[jQuery.expando]).

Пока$.data() Это очень полезно, бывают случаи, когда вы хотите отобразить данные в теги без сброса этих данных в один глобальный сегмент - вам нужен собственный меньший набор данных, который вы можете, например, проверить на длину или выполнить цикл.

В качестве надуманного примера, предположим, что у вас есть значки, которые при нажатии поворачиваются через одно из 4 состояний. Когда кто-то находится в состоянии 2, вы хотите добавить его в массив значков в состоянии 2. Наиболее очевидный способ сделать это - добавить тег в массив; однако это может привести к утечке памяти. Вы могли бы позвонить$.data() на флажок, но это не совсем то, что вы пытаетесь сделать - вам придется пройти через все флажки проверки$.data() против них выяснить, которые есть и нет в списке.

Вам нужно хранить некоторую абстракцию тегов в массиве, и это UUIDs в jQuery. Вы можете написать свою собственную функциональность UUID, но в идеале вы просто используете функциональность UUID, уже встроенную в JQuery, как по размеру кода, так и по качеству. Вы можете попросить JQuery неявно присоединить UUID к тегу, вызвав$.data(tag, 'irrelevant', 1) а затем проверьтеtag[jQuery.expando] чтобы получить его UUID, и, наконец, использовать его в списке ... но это немного хак. На самом деле, что было бы идеально, это показать следующее в публичном API:

$.getUuid(tag): Проверяет и создает UUID, если такового не существует - в идеале метод извлекается из$.data() и создает или выбирает uuid для переданного тега.

Итак, есть ли причина, по которой это не учитывается в его собственном методе в jQuery? Это как-то вредно? Разве это никогда не казалось чем-то полезным?

Я должен отметить, что я фактически учел это в используемой нами версии jQuery, и это очень полезно. Но, возможно, есть основополагающий риск, который я не использую. Я также знаю о плагине, который вроде бы выполняет это, но он немного сломан - и наличие 2-х путей кода для выполнения той же функциональности UUID является и немного расточительным, и немного ломким.

Ответы на вопрос(2)

Ваш ответ на вопрос