В javascript в this всегда объект, который вызвал функцию - очень легко и часто очень полезно. Просто нужно перестать ассоциировать его с this из с-подобных языков и будет нормально.
На счёт $, выкручиваются так:
(function ($) {
$('body').remove();
})(jQuery);
Так мы точно знаем (задаём), кому принадлежит $. Можно и без него обходиться :)
Daemon написал:
Я не сторонник запилить в простой проект 20 зависимостей, а потом пытаться понять, кому из них досталась переменная $.
Хорошей практикой (и хорошим тоном) является не засорять global scope и абсолютное большинство библиотек это делает. Например в случае с jQuery если используешь require.js то $ не будет заргеистрирован в global scope, а при использовании можешь обозвать его сам как хочешь. Хочешь $, хочешь jquery, как угодно.
Примерно так:
И кстати без require или commonjs jquery будет ругаться (через console.warn), если $ уже кем-то занят.
Daemon написал: Но, судя по всему, для моей дальнейшей карьеры без js никуда. Поэтому рано или поздно придется его учить чуть дальше, чем "поиграться с ajax".
Не стоит этого бояться :) Я тоже когда-то плевался, ненавидел js, считал что на нем пишут только безрукие лохи :) Теперь это один из самых любимых моих языков. Он непривычен после C++-подобных языков, это точно, но он очень мощен и гибок.
Daemon написал:
Странно, насчет this. Почему-то я запомнил, что не всегда это так.
На самом деле ты правильно запомнил, this можно задать явно при вызове функции через call или apply:
var myCoolObject = {
sayHello: function() {
console.log('hello');
}
};
var myCoolFunction = function() {
this.sayHello();
}