В чем разница между "this", "$ this" и "$ (this)"?
В чем разница между этими тремя формами:
this
$this
$(this)
Ответы
Ответ 1
В типичном использовании вы обычно видите их как это (использование $this
может отличаться):
-
this
- Относится к элементу DOM в обработчике, который вы сейчас используете, но это может быть другой объект целиком в других ситуациях, но он всегда является контекстом.
-
$this
- обычно создается var $this = $(this)
кэшированная версия завершенной версии jQuery для эффективности (или отключает $(this)
, чтобы получить то же самое во многих случаях).
-
$(this)
- обернутая jQuery версия элемента, поэтому у вас есть доступ к всем его методам (те, что указаны в $.fn
в частности).
Ответ 2
-
this
- это объект, на который был вызван метод
-
$this
- это слабо названная переменная без особого значения.
-
$(this)
вызывает слабо названную функцию $
с this
в качестве единственного аргумента
Ответ 3
В обработчике событий jQuery:
-
this
- элемент DOM, назначенный обработчику событий для
-
$(this)
- это объект jQuery, созданный из этого элемента.
-
$this
- обычно переменная, содержащая результат $(this)
В целом:
-
this внутри функции ссылается на объект или примитив, вызываемый функцией. Когда функция используется как конструктор, она ссылается на новый объект, который строится. Вне любой функции this
относится к глобальному объекту (window
в нестрогом режиме).
Вы можете найти хорошее подробное объяснение в MDN.
-
$this - это имя переменной. В именах переменных JavaScript может начинаться с $
. Некоторым нравится использовать его в качестве префикса для переменных, содержащих объекты jQuery:
var body = document.body; // no prefix for a plain DOM object
var $body = jQuery('body'); // prefix for the same object wrapped in jQuery
var $this = $(this);
-
$(this) - это вызов функции, где $
- имя функции, а this
- его аргумент:
var $ = alert;
$(this); // [object Window]
$
не имеет никакого особого значения. Но jQuery определяет функцию $()
как сокращенное выражение для jQuery()
. В зависимости от своих аргументов эта функция может много разных вещей.
Ответ 4
В контексте jQuery 'this' - это объект, на который был вызван метод. '$ this' - действительно слабо названная переменная без особого значения. '$ (this)' передает 'this' в jQuery, который вернет объект jQuery, связанный с любым 'this', если 'this' является объектом DOM.
Ответ 5
Ваш вопрос будет лучше обслуживаться с большим контекстом.
Однако я предполагаю, что вы спрашиваете о переменных в контексте обратного вызова для события элемента (например, click
).
-
this
- это контекст вашего обработчика (обычно элемент DOM, в случае обработчика событий DOM)
-
$this
обычно используется для хранения результата $(this)
-
$(this)
возвращает объект jQuery, который обертывает this
- для получения дополнительной информации см. jQuery.
Ответ 6
Развернувшись на том, что сказал Давид:
-
$this
обычно используется для копирования копии объекта this
в текущей области. Например, с помощью var $this = this;
вы можете использовать переменную $this
в любой области текущей области и всегда иметь возможность ссылаться на этот объект, который в противном случае изменился бы, если бы просто ссылался на this
... Мне лично не нравится соглашение об именах $this
и предпочитают что-то вроде var parentScope
-
$(this)
- это функция (var $ = function(){}
), используемая некоторыми фреймворками, такими как jQuery или PrototypeJs. Причина, по которой он используется, состоит в том, что $
очень легко набирать вместо someLongFunctionName
и потому, что в коде он обычно называется many, ему проще как можно короче