Just because JS' _this_ doesn't behave like in other languages doesn't make it bad, I mean it's behaviour is well defined.
JavaScript is more dynamic than most languages and yes this may be hard to grasp for the average developer, especially when they come from languages that are considered "more mature".