моего JQuery выглядит следующим образом:объем этого в функции обратного вызова Jquery в
$('body').on('click', '.show-it', function (e) {
e.preventDefault();
showIt();
});
function showIt() {...};
В функции showIt
, когда я хочу попробовать получить доступ $(this)
, он всегда возвращает window
объект. Насколько мне известно, поскольку функция showIt
теперь служит частью функции обратного вызова, область действия this
в функции showIt
должна быть такой же, как и в функции обратного вызова кнопки «», которая является нажатием на элемент. Но, похоже, это не так. Я должен использовать self.showIt.call(this)()
в функции обратного вызова, чтобы получить нужный объем this
. Так что происходит за сценой?
'self.showIt' не имеет никакого смысла. 'showIt' не является методом' self' в коде, который вы предоставили. –
@KevinB: с учетом показанного кода showIt действительно является свойством самого себя, ака глобальным. первая строка избыточна, потому что по умолчанию это окно self == this ==. это также означает, что нет смысла говорить «я». что-то, поскольку это лексическое имя области уже активировано посредством закрытия. – dandavis
@ dandavis правильно, но это, очевидно, зависит от того, какова область действия. я думаю, вы можете утверждать, что, поскольку он не предоставил его, можно с уверенностью предположить, что он находится в глобальной области действия, хотя было бы бессмысленно использовать «var self = this» в глобальной области. –