Подтвердить что ты не робот

В чем разница между "this", "$ this" и "$ (this)"?

В чем разница между этими тремя формами:

this
$this
$(this)
4b9b3361

Ответ 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, ему проще как можно короче