@EpicUsaMan

Window == this в Jquery 3?

$.fn.anyFunction = () => {
console.log(this == window);
return this;
}

$(document).ready(() => {
$('div').anyFunction(); // true
});


Почему и как исправить?
  • Вопрос задан
  • 195 просмотров
Решения вопроса 2
AppFA
@AppFA
Frontend developer at Yandex
Потому что вы используете стрелочные функции - они не используют контекст, если он вам нужен юзайте стандартные функции:
function () { ... }
Ответ написан
Stalker_RED
@Stalker_RED
Стрелочные функции используют контекст в котором они были объявлены. Вы объявляли в window, а в примере ниже - в объекте blablabla.

function blablabla() {
  $.fn.anyFunction = () => {
    console.log('compare to window: ', this == window); // false
    console.log('compare to blablabla: ', this instanceof blablabla); // true
    console.log(this);  // blablabla {}
    return this;
  }
}

$(document).ready(() => {
  var b = new blablabla();
  $('div').anyFunction();
});

https://jsfiddle.net/4az1vyee/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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