禁止 "this"
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.
を使用します。
しかし、 this
は多くの状況でコンテキストを失います(戻り値は不明です):
- ネストされた関数内のコンテキストを失います
- コールバックでコンテキストを失います
- メソッドがイベントハンドラーとして使用されると、
this
はコンテキストを失います。
最高の言語
JavaScriptは、関数型プログラミング言語であると同時にプロトタイプベースの言語でもあります。 this
を取り除くと、関数型⚙️プログラミング言語としてJavaScriptが残ります 。 それはさらに良いです!
同時に、this
なしでJavaScriptは クラスや継承なしでオブジェクト指向プログラミングを行うための新しいユニークな方法を提供します。
拒絶 this
this
の問題を回避する最善の方法は、this
をまったく使用しないことです。
これがないJavaScriptは、最高の関数型⚙️プログラミング言語のように見えます !
this
をクロージャーコレクションとして使用せずに、カプセル化されたオブジェクトを作成できます。 経由 React Hooks this
ステートフルコンポーネントなしでを作成できます。
this
キーワードは、既存のすべてのアプリケーションを壊さずにJavaScriptから削除することはできません。 しかし、何ができるでしょうか? this
なしで独自のコードを記述し、ライブラリでのみ使用できるようにすることができます。 一方、紹介 新しいルール ESLint、
はthis
の使用を禁止します。
前回のレッスンで放棄したので クラス, それから彼らと一緒に私たちはthis
に別れを告げます。
問題?
に書き込む Discord または電報 チャット, また、私たちの購読 ニュース
質問
キーワードthis
は-
- メソッドを所有するオブジェクト
- 関数の最初の引数
- プロパティのセット
this
なしで行うことは可能ですか?
- できますが、まったく使用しない方がよいです
- 可能ですが、お勧めできません
- それは不可能です。
this
はJavaScriptから削除できません
this
のないJavaScriptは最高のように見えます:
- 関数型プログラミング言語
- 手続き型プログラミング言語
- 論理プログラミング言語
このレッスンでどれだけ学んだかを理解するために、モバイルアプリ このトピックに関する私たちの学校。
リンク
- Статья "Удаление ключевого слова «this» из JavaScript делает язык лучше"
- Статья "Ключевое слово this в JavaScript"
- MDN web doc. Статья "this"
Contributors ✨
Thanks goes to these wonderful people (emoji key):
Dmitriy K. | Dmitriy Vasilev 💵 | Resoner2005 🐛 🎨 🖋 | Navernoss 🖋 🐛 🎨 |