В Java все переменные, которые вы объявляете, на самом деле являются «ссылками» на объекты (или примитивы), а не самими объектами.
При попытке выполнить один метод объекта , ссылка просит живой объект выполнить этот метод. Но если ссылка ссылается на NULL (ничего, нуль, void, nada), то нет способа, которым метод будет выполнен. Тогда runtime сообщит вам об этом, выбросив исключение NullPointerException.
Ваша ссылка «указывает» на нуль, таким образом, «Null -> Pointer».
Объект живет в памяти виртуальной машины пространство и единственный способ доступа к нему - использовать ссылки this
. Возьмем этот пример:
public class Some {
private int id;
public int getId(){
return this.id;
}
public setId( int newId ) {
this.id = newId;
}
}
И в другом месте вашего кода:
Some reference = new Some(); // Point to a new object of type Some()
Some otherReference = null; // Initiallly this points to NULL
reference.setId( 1 ); // Execute setId method, now private var id is 1
System.out.println( reference.getId() ); // Prints 1 to the console
otherReference = reference // Now they both point to the only object.
reference = null; // "reference" now point to null.
// But "otherReference" still point to the "real" object so this print 1 too...
System.out.println( otherReference.getId() );
// Guess what will happen
System.out.println( reference.getId() ); // :S Throws NullPointerException because "reference" is pointing to NULL remember...
Это важно знать - когда больше нет ссылок на объект (в пример выше, когда reference
и otherReference
оба указывают на null), тогда объект «недоступен». Мы не можем работать с ним, поэтому этот объект готов к сбору мусора, и в какой-то момент VM освободит память, используемую этим объектом, и выделит другую.
Существует 3 библиотеки JS, которыми я в настоящее время пользуюсь: Прототип , jQuery и MooTools. Прототип и jQuery наиболее широко используются. jQuery и MooTools являются самыми легкими.
MooTools имеет хорошую функцию на их сайте, который позволяет, Вы для создания пользовательского сжали .js файл только с модулями, в которых Вы нуждаетесь, делая самое легкое, в зависимости от того, что Вы делаете. jQuery имеет намного более высоких поклонников и лучшую поддержку из-за них.
Из этих 3, я рекомендовал бы jQuery, но это - вероятно, не плохая идея смотреть на все доступные опции.
Мне нравится jQuery, потому что это легко, но чрезвычайно мощно.
существует также превосходен документация и учебные руководства для запущения Вас.
YUI является слишком большим и сложным для моих вкусов. Я раньше был Опытным фанатом, но это потеряло свой блеск мне, когда я приехал для использования jQuery в новых проектах. То, что мне нравится приблизительно jQuery, является последовательной умственной моделью: найдите что-то, действие на нем.
мне понравился jQuery достаточно, что я создал виджет Панели инструментов для офлайнового доступа к документам: Ссылочный Виджет jQuery
jQuery очень хорош.
то, Что было бы очень прохладно, - то, если мы могли бы добавить нашу платформу к списку платформ, которые предлагаются здесь и позволяют другим голосовать за то на том, чтобы им понравилось лучше всего или использование - т.е. динамический опрос/обзор.
midori является легкой платформой JavaScript (только 45K несжатый). Это поддерживает большую часть CSS2 и селекторы CSS3 к доступу элементы DOM, и не требует, чтобы Вы изучили совершенно новый API. Вдобавок к стандартному DOM, событию и функциональности Ajax, это также поддерживает основные визуальные эффекты, перетаскивание, всплывающие меню и автоматический завершенный среди прочего.
JQuery передает....
плюс он популярен, таким образом, Вы знаете, что это будут приблизительно
Я рекомендовал бы MooTools :-)
var theDiv = new Element('div', {
'id': 'theDiv',
'styles': {
'backgroundColor': '#BF1942',
'color': '#fff'
}
}).toggleClass('someClass').inject($('someSibling', 'after');
, мне действительно нравится удобочитаемость его кода.
Я прокручивал свое собственное в течение многих лет, но когда проигрывание с другими остается далеким далеко от додзе + jQuery. У меня есть только хороший материал для высказывания о комбинации mootools (лучшая js кукушка ани, которую я видел), + gui или yui наборы
Я соглашаюсь с JQuery как легкая, расширяемая, мощная опция. Моя компания в настоящее время использует Extjs, который является крупным и путь, более сложный для того, что мы делаем. Extjs является большим, если необходимо сделать быстрый сайт без разработчиков включенным (он идет со всей графикой и стилями для создания чего-либо, в чем Вы нуждаетесь), но это - приблизительно 6 МБ и заканчивает тем, что делало простые задачи более громоздкими :)
, Если я мог бы переделать все это, который может произойти, я использовал бы JQuery.
Другое голосование за jQuery здесь. Быстро, свет, и чем больше Вы изучаете это, тем быстрее и более краток Ваш код будет.
MooTools является довольно горячим. Это становится немного больше в эти дни (основа составляет 60 КБ) так, чтобы мог бы быть вне Вашей досягаемости.
, Но если бы Вы действительно сразу после основного DOM, jQuery, вероятно, был бы идеален.
Можно ли упаковать какой-либо код JavaScript для создания этого более легким, таким образом, вопрос мог бы свестись, который Вы предпочитаете? Я иду для Прототип - существует версия доступный названный protopacked, который я думаю, входит на уровне приблизительно 20 КБ.
Я использую Прототип довольно экстенсивно. Пакет по умолчанию составляет 28 КБ, тогда как jQuery 90ish*.
*Uncompressed
Просто предложение, но я искал бы платформу, которая имеет функции, которых Вы требуете и не волнуете слишком много по поводу размера в причине. Большинство современных платформ как PrototypeJS или JQuery не является настолько большим и минимизировало версии (удаленные пробелы, и т.д.). Кроме того, необходимо настроить сайт для кэширования этих библиотек. Единственное время пользователь должен будет загрузить библиотеку, находится с первым визитом или любым посещением после того, как они очистили свой кэш браузера.
При именовании файла (файлов) библиотеки, удостоверьтесь, что использовали уникальное имя файла. Например, назовите свою библиотеку на основе версии библиотеки. Когда необходимо будет обновить до новой версии библиотеки, просто сошлитесь на новое имя файла (версия) от соответствующих страниц. Это позволит Вам кэшировать эти файлы без краткосрочной даты истечения срока.
существует много других методов кэширования, которые Вы могли бы использовать, чтобы обойти размер файла библиотеки и улучшить производительность. Я рекомендовал бы "Высокопроизводительные веб-сайты", ISBN: 0596529309. В то время как вся информация в книге может быть найдена онлайн, книга делает хорошее задание сбора информации, в которой Вы нуждаетесь в одном месте, и склеивает различные понятия (у меня нет финансового интереса в этой книге).
Этим вопросом является действительно дубликат этот вопрос (я думаю). Мой ответ по тому вопросу был следующим образом (и применяется здесь также):
Вы получите миллион ответов здесь. Короткий: существуют несколько, ни один. Они все отличаются до некоторой степени и подобны в других, и, в целом, ни один из них не плохой выбор. Основные платформы, которые я рекомендовал бы, (в алфавитном порядке, чтобы не показать любую предвзятость):
* Dojo
* jQuery
* MooTools
* Prototype (with Scriptaculous)
* YUI
* MochiKit
Каждый из них имеют различные стили, различные сообщества и различные фокусы. Какой, который необходимо выбрать, является главным образом вопросом соответствия стилю этих платформ с собственным. Проведите некоторое время с учебными руководствами и демонстрациями каждого и выберите того, который имеет большую часть смысла для Вас.
Как правовая оговорка, я укажу, что я - разработчик для MooTools и записал книгу по тому, как использовать его. Я не сказал бы, что MooTools лучше, чем любая из этих других платформ; только отличающийся.
Основной код YUI - yahoo-dom-event.js - составляет 31 КБ и работы очень приятно. Вы получаете все виды хороших обработка событий & управление DOM , и очень легко затем прибавить более сложное - и более тяжелый - материал если и при необходимости в нем.
jQuery является очень гладким и очень легким учиться. Я использовал Мычание в прошлом для некоторого основного управления DOM. Это имеет меньше места, но меньше функциональности. Лучший выбор для Вас определенно зависит от Ваших требований.
Лично, когда я делал клиентскую работу, я влюбился в JQuery, который имеет 15k версию. Существует небольшая кривая обучения, но это очень очень гладко.
Попробуйте DOMAssistant. Это - только 7 КБ gzipped, действительно быстро и имеет поддержку Unicode.
Я попробовал прототип и scriptaculous сначала, но затем переключился на jquery и существует не оглядывание назад. Если Вы хотите хороший пользовательский интерфейс затем, YUI хорош, но jQuery является простым, по-моему.
Вот сравнительная таблица, что я раньше помогал оценить некоторые различные библиотеки там.
Это ни в коем случае не списки каждая функция каждой библиотеки, но дает Вам хороший обзор для сужения выбора к тому, в какие платформы необходимо вырыть далее видеть, удовлетворяет ли это потребности.
Я также люблю jQuery из-за мощной селекторной функции "$" и хочу предоставить ссылку на альтернативную документацию: Визуальный jQuery
Я предпочитаю JQuery. Это имеет хорошую документацию также. JQuery
Я - большой поклонник Пользовательский интерфейс Yahoo! (YUI) Библиотека. Это имеет хороший набор материала управления DOM и довольно твердую платформу виджета. Плюс, можно смешать и соответствовать тому, что Вы хотите использовать.
mooTools является моим фаворитом также. Их интерфейс позволяет Вам брать в качестве многого или так же мало как Вам угодно поэтому, если требуется добавить больше приемов к сумке для инструментов по линии, довольно легко сделать так.
Также посмотрите вопрос , Какую библиотеку JavaScript Вы выбрали бы для нового проекта и почему?
кажется, что jQuery рос последний раз. (См. эта презентация , скользите 4)
Я использую jQuery - это является простым и маленьким, и лучшим из всех: Очень легкий :)
Независимо от того, что Вы выбираете, рассматриваете разрешение Google разместить его для Вас:
jQuery - лучший вариант, если вы делаете небольшие улучшения, так как это наиболее широко используемый фреймворк, и вы получите много отзывов от других пользователей. Однако я сам не являюсь пользователем jQuery, потому что я уже разрабатываю RIA с использованием Ext . Из-за этого я использую Ext-core (подмножество Ext), потому что фреймворк имеет лучший объектно-ориентированный дизайн и предоставляет те же базовые функции, что и jQuery (обработка событий, манипуляции с DOM, Ajax).
http://www.extjs.com/products/core/
Я никогда не использовал Prototype, потому что они дополняют Object.prototype
, что вызывает ошибки в нашем коде.