Каковы ограничения jQuery?

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

Поскольку простой объект JS не является iterable просто вне поля, мы не можем использовать цикл for..of для итерации по его контенту. Но никто не может остановить нас, чтобы сделать его итерируемым.

Давайте будем иметь book объект.

let book = {
  title: "Amazing book",
  author: "Me",
  pages: 3
}

book[Symbol.iterator] = function(){

  let properties = Object.keys(this); // returns an array with property names
  let counter = 0;
  let isDone = false;

  let next = () => {
    if(counter >= properties.length){
      isDone = true;
    }
    return { done: isDone, value: this[properties[counter++]] }
  }

  return { next };
}

Поскольку мы сделали это, мы можем использовать его следующим образом:

for(let pValue of book){
  console.log(pValue);
}
------------------------
Amazing book
Me
3

Или, если вы знаете мощность генераторов ES6 , вы наверняка можете сделать код намного короче.

book[Symbol.iterator] = function *(){

  let properties = Object.keys(this);
  for (let p of properties){
    yield this[p];
  }

}

Конечно, вы может применять такое поведение для всех объектов, делая Object итерабельным на уровне prototype.

Object.prototype[Symbol.iterator] = function() {...}

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

let pValues = [...book];
console.log(pValues);
-------------------------
["Amazing book", "Me", 3]

Или вы можете использовать назначение destructuring :

let [title, , pages] = book; // notice that we can just skip unnecessary values
console.log(title);
console.log(pages);
------------------
Amazing book
3

Вы можете проверить JSFiddle со всеми приведенными выше мной кодами.

12
задан Shiladitya 22 March 2019 в 15:37
поделиться

11 ответов

mjc

$("a tip")
.you()
.can()
.chain()
.stuff()
.like()
.this();

И/или определите переменную, для которой можно использовать функции jQuery на:

var $tip = $("a tip");
$tip.choo();
$tip.choo();
$tip.train();
7
ответ дан 2 December 2019 в 05:05
поделиться

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

Я думаю, что это - фантастическая библиотека, которую я должен сказать, и пока совет относительно сторонних библиотек имеет заслугу с объемом использования JavaScript, взлетавшего в этом мире Web 2.0, и с таким количеством небольших несоответствий между браузерами, имение хорошо сохраняемой библиотеки может действительно ускорить разработку, поскольку это сохраняет Вас издержки необходимости сделать всю работу, требующую беготни самих.

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

8
ответ дан 2 December 2019 в 05:05
поделиться

Одна вещь, с которой я столкнулся с jQuery, состоит в том, что Вы заканчиваете тем, что объединили много в цепочку объектов вместе, и он имеет тенденцию быстро становиться нечитабельным, если Вы не осторожны.

пример, о котором я могу думать, который иллюстрирует это, находится на блоге John David Anderson:

Существует парень, который записал регистрирующуюся функцию, таким образом, можно выяснить, что whereYou (являются) .whenYoureCoding () .inThe (middleOf).a (jQuery) .trainWreck ().

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

5
ответ дан 2 December 2019 в 05:05
поделиться

jQuery является большим - он может сделать, любой JavaScript может сделать, но более быстрый, и в меньшем количестве кода. Его единственные ограничения - те свойственные от JavaScript как клиентский язык сценариев. Как любой инструмент, возможно неправильно использовать, но если Ваши потребности сценариев не являются глубоко главными нет почти никакой причины НЕ использовать его.

2
ответ дан 2 December 2019 в 05:05
поделиться

Я столкнулся со следующим в своем чтении блога. Это не действительно ограничения в jQuery, но частых ошибках, сделанных при использовании разработчиков ASP.NET, использующих jQuery:

http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/

2
ответ дан 2 December 2019 в 05:05
поделиться

BrilliantWinter

jQuery нисколько не чрезмерно увеличен в размере. Это - одна из самых маленьких библиотек там.

Все это - функции, расширяется объекта jQuery, что означает, что можно отсоединить любую функциональность, которую Вы не используете и делаете место библиотеки еще меньшим, чем это - размер по умолчанию (15 КБ, Minified и Gzipped).

jQuery - и любая библиотека в этом отношении - обеспечивают API, который является тем же через все браузеры A-класса. Эта абстракция оставляет Ваш инструмент для очистки кода и менее подверженный ошибкам.

Наконец, jQuery используется главными "плеерами". Компании как Google, Dell, Digg и NBC пользуются библиотекой. Это не только большой знак одобрения, но также и обеспечение, что разработчики jQuery очень осторожны при пересмотре библиотеки, проверке, что ничто не повреждается и никакие ошибки не представлены.

2
ответ дан 2 December 2019 в 05:05
поделиться

@BrilliantWater - Большинство людей не использует jQuery для "учений", они используют его, потому что это более быстро и легче использовать и вызывает меньше головных болей, чем создание всех методов самостоятельно. И целый "чрезмерно увеличенный в размерах" аргумент полностью спорен; jQuery является одной из самых маленьких библиотек там и со все большим количеством людей, получающих широкополосную связь, которой это становится все меньше и меньше проблемы.

Плюс, так как jQuery размещается GoogleCode, вероятно, что это уже будет в пользовательском кэше, так как столько веб-сайтов использует его!

jQuery является потрясающим! Я продолжаю говорить мне, что я должен изучить другую библиотеку, но я действительно не делаю. jQuery имеет все, в чем я нуждаюсь. Я знаю, что это не подходит для всех проектов, но это, конечно, имеет место в большинстве!

2
ответ дан 2 December 2019 в 05:05
поделиться

Я нашел, что jQuery необходим при записи примерно любого полезного бита JavaScript. Тем не менее один сайт я продолжал работать требуемый, чтобы сделать анимации. Я предложил не использовать флэш-память, но выполнить относительно "простые" анимации что пакеты jQuery так хорошо с jQuery. Мы использовали, исчезает и скользит и т.п.. В конце это было слишком много для браузеров для обработки (конкретно IE, но FF показал знаки напряжения), и мы должны были масштабировать почти все это назад.

jQuery является тоннами забавы кодировать с, и эксперимент с. Это имеет фантастическое сообщество разработчиков, которое отвечает на вопросы очень быстро. Просто бойтесь также увлекаться!:)

1
ответ дан 2 December 2019 в 05:05
поделиться

Можно всегда рассматривать различные платформы, если jQuery не подходит. Вот пример mootools.

MooTools является компактной, модульной, Объектно-ориентированной платформой JavaScript, разработанной для промежуточного звена усовершенствованному разработчику JavaScript. Это позволяет, Вы для записи мощный, гибкий, и перекрестный браузер кодируете с его изящным, хорошо зарегистрированным, и когерентным API.

0
ответ дан 2 December 2019 в 05:05
поделиться

Я использовал его в течение приблизительно 6 месяцев теперь, и за исключением некоторых более медленных разработчиков в моей команде, не охватывающей его (вероятно, из-за пугающего появления некоторых более длинных цепочек), я не столкнулся с единственной проблемой.

0
ответ дан 2 December 2019 в 05:05
поделиться

Я - большой поклонник jQuery (как свидетельствуется тем, что я писал и плагин и виджет Панели инструментов для него).

Одна вещь знать - какие браузеры jQuery поддерживает. Сайт документов, кажется, имеет проблемы в данный момент. Это - другая вещь знать... ;-)

0
ответ дан 2 December 2019 в 05:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: