ホームページ  >  記事  >  ウェブフロントエンド  >  デコレータとは何ですか?JavaScript でどのように使用されますか?

デコレータとは何ですか?JavaScript でどのように使用されますか?

WBOY
WBOY転載
2023-08-27 16:09:02762ブラウズ

什么是装饰器以及它们在 JavaScript 中如何使用?

このチュートリアルでは、JavaScript デコレータについて学び、その内部の仕組みと使用法を理解します。

JavaScript のデコレータとは何ですか?

デコレーターという言葉は、あるコードまたはプログラムのセットを別のコードまたはプログラムのセットと組み合わせるという意味です。または、関数を別の関数でラップして、その関数の機能または動作を拡張することもできます。デコレータはデコレータ関数とも呼ばれます。

開発者はこのデコレータという用語を Python、C# などの他の言語で使用してきましたが、現在では JavaScript にもデコレータが導入されています。

関数デコレータ

JavaScript では、関数はオブジェクトのように動作するため、ファースト クラス オブジェクトとも呼ばれます。これは、関数を変数に代入したり、関数から関数を返したり、関数をパラメーターとして渡すことができるためです。

###例### リーリー ###例###

関数を別の関数に渡す

リーリー ###例###

別の関数を介して関数を返す

リーリー

高階関数

高階関数とは、関数をパラメータとして受け取り、特定の操作を実行した後にその関数を返す関数を指します。上で説明した関数は、高階関数、つまり printAdditionFunc です。

###例### リーリー

高階関数としてすでにデコレータがあるのに、なぜ別のデコレータが必要なのかと思われるかもしれません。

つまり、高階 JavaScript 関数である関数デコレーターがありますが、クラスが JavaScript に出現すると、クラス内にも関数があり、高階関数はデコレーターと同様に失敗します。 ###例### クラスの高階関数の問題を見てみましょう -

リーリー

ここで何が起こるかというと、上位関数が呼び出されるときに、クラスのメンバー関数であるその引数が、ここでは websiteName 関数として呼び出されます。関数 websiteName は外部クラス関数から呼び出されるため、関数の値は websiteName 関数内では未定義です。これがこのログエラーの背後にある理由です。

したがって、この問題を解決するために、最終的に this の値を保持するクラス

Website

のオブジェクトも渡します。

リーリー

PrintName 関数では、call 関数を通じて arg (websiteName 関数) を呼び出します。この関数は、Web サイト クラス オブジェクトを使用して websiteName 関数を呼び出します。そのため、ポインタの値は、 Web サイト クラスは fname 変数と lname 変数を持つオブジェクトであるため、エラーなしで動作します。

この記事を参考にして、デコレータとその使用法を理解していただければ幸いです。

以上がデコレータとは何ですか?JavaScript でどのように使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。