Skip to main content

禁止 "this"

@serverSerrverlesskiy

JavaScriptからキーワード🗝️thisを削除すると、言語がより良くなります !

その理由は、 thisは、関数が定義された場所ではなく、関数が⚙️と呼ばれた方法に依存するためです。したがって、JavaScriptの thisは、言語の多くの混乱の原因です 。

thisを使用すると、関数が呼び出されたコンテキスト内の正確なオブジェクトで動作することが保証されます。 thisメソッドを使用すると、オブジェクトの任意のプロパティにアクセスできるだけでなく、オブジェクト自体への参照をどこかに渡すこともできます(アプリケーションのセキュリティが低下します)。

thisの値は呼び出しのコンテキストと呼ばれ、関数が呼び出されたときに決定されます。たとえば、オブジェクトなしで宣言されたこのような関数は、完全に有効です。

functionsay Hi() {
console.log(this.firstName)
}

この関数は、thisが何になるかをまだ知りません。 これは、プログラムの実行時に明らかになります。

同じ関数が異なるオブジェクトのコンテキストで実行される場合、異なるthisを受け取ります。

var user = { firstName: 'ジョニ' }
var admin = { firstName: '管理者' }

function funcName() {
console.log(this.firstName)
}
user.f = funcName
admin.g = funcName

// this ドットの前のオブジェクトに等しい::
user.f() // ジョニ
admin.g() // 管理者
admin['g']() // 管理者 (オブジェクトへのアクセスは角括弧を介して実装されます)

したがって、 thisの値は、関数がどのように作成されたかに依存せず、呼び出し時にのみ決定されます。

thisとその欠点

メソッドは、オブジェクトに格納される関数⚙️です。 関数⚙️がどのオブジェクトで作業するかを知るためには、this.を使用します。

Poor

しかし、 thisは多くの状況でコンテキストを失います(戻り値は不明です):

  • ネストされた関数内のコンテキストを失います
  • コールバックでコンテキストを失います
  • メソッドがイベントハンドラーとして使用されると、thisはコンテキストを失います。

最高の言語

The_best

JavaScriptは、関数型プログラミング言語であると同時にプロトタイプベースの言語でもあります。 thisを取り除くと、関数型⚙️プログラミング言語としてJavaScriptが残ります 。 それはさらに良いです!

同時に、thisなしでJavaScriptは クラスや継承なしでオブジェクト指向プログラミングを行うための新しいユニークな方法を提供します。

拒絶 this

remember

thisの問題を回避する最善の方法は、thisをまったく使用しないことです。

JavaScript

これがないJavaScriptは、最高の関数型⚙️プログラミング言語のように見えます !

thisをクロージャーコレクションとして使用せずに、カプセル化されたオブジェクトを作成できます。 経由 React Hooks thisステートフルコンポーネントなしでを作成できます。

thisキーワードは、既存のすべてのアプリケーションを壊さずにJavaScriptから削除することはできません。 しかし、何ができるでしょうか? thisなしで独自のコードを記述し、ライブラリでのみ使用できるようにすることができます。 一方、紹介 新しいルール ESLint、thisの使用を禁止します。

前回のレッスンで放棄したので クラス, それから彼らと一緒に私たちはthisに別れを告げます。

問題?

Problem

に書き込む Discord または電報 チャット, また、私たちの購読 ニュース

質問

Question

キーワードthisは-

  1. メソッドを所有するオブジェクト
  2. 関数の最初の引数
  3. プロパティのセット

thisなしで行うことは可能ですか?

  1. できますが、まったく使用しない方がよいです
  2. 可能ですが、お勧めできません
  3. それは不可能です。 thisはJavaScriptから削除できません

thisのないJavaScriptは最高のように見えます:

  1. 関数型プログラミング言語
  2. 手続き型プログラミング言語
  3. 論理プログラミング言語

このレッスンでどれだけ学んだかを理解するために、モバイルアプリ このトピックに関する私たちの学校。

Sumerian school

リンク

  1. Статья "Удаление ключевого слова «this» из JavaScript делает язык лучше"
  2. Статья "Ключевое слово this в JavaScript"
  3. MDN web doc. Статья "this"

Contributors ✨

Thanks goes to these wonderful people (emoji key):


Dmitriy K.


Dmitriy Vasilev

💵

Resoner2005

🐛 🎨 🖋

Navernoss

🖋 🐛 🎨

EnglishMoji!