Запрет на "this"

«Удаление ключевого слова this из JavaScript делает язык лучше!»

Проблема this

this зависит от того, как вызвана функция, а не от того, где она определена.

var user  = { firstName: 'Джони' }
var admin = { firstName: 'Админ' }

function funcName() {
  console.log(this.firstName)
}

user.f  = funcName
admin.g = funcName

user.f()      // Джони
admin.g()     // Админ
admin['g']()  // Админ

Недостатки this

JavaScript как функциональный язык

«JavaScript — это одновременно функциональный и прототипно-ориентированный язык. Если мы избавимся от this, у нас останется JavaScript как функциональный язык. Это даже лучше!»

Отказ от this

«Лучший способ избежать проблем с this — вообще его не использовать!»

// Вместо класса с this:
function createCounter() {
  let count = 0
  return {
    increment: () => { count++ },
    getCount:  () => count
  }
}

С React Hooks можно создавать компоненты с состоянием без this.