デコレータによるクラスの動作への変更は、実行時ではなく、コードのコンパイル時に行われます。これは、デコレータがコンパイル中にコードを実行できることを意味します。言い換えれば、デコレーターは本質的にコンパイル時に実行される関数です。
いくつか質問があります:
上記の引用文では次のように述べられています。 デコレータによるクラスの動作の変更は、実行時ではなくコードがコンパイルされるときに発生します
、つまり コンパイル時#この文 ##、
実行時間、
出現これはどういう意味ですか?
デコレータの本質は、コンパイル中に実行される関数 です。ここでの
実行は、次の
出現と同じ意味ですか?質問1?
コンパイル時間は、コードの実行が開始される前に、JS エンジンがコードをマシンが実行できるオペレーションに変換する時間として大まかに理解できます。つまり、このプロセスは実行開始前に完了するため、実行時に干渉することはできません。
ランタイムとは、コードがコンパイルされた後、マシンが実行できる操作が実行を開始するとき、つまり、記述したものがマシンの操作から実際にコンピューター上で確認できるものに変わるときを指します。
発生に関しては特別な意味はなく、JS エンジンがコードをマシンの動作に変換する時点でこれらの変更が完了することを意味します。
実行と発生は大まかに原因と結果の関係と考えることができます。 Change、動詞の一般的な連語は「happen」、function、単語の一般的な連語は「execution」です。出来事は、前後の状態のコントラストを強調します。つまり、何かが起こったために、その後は以前とは異なります。一方、実行はプロセスに焦点を当て、操作のすべてのステップを再実行し、前後に違いがあるかどうかを意識的に考慮しません。したがって、ここに修飾子 = コンパイル時に実行される関数を指定する必要があります。この関数を実行すると、クラスの動作が変わります。
上で述べたように、これは クラスの動作 への変更であるため、修飾子は通常、クラスの宣言時にクラス内のメソッドと属性を変更するために使用されます。
端的に言うと、コードは一般的にコンパイル段階と実行段階に分かれており、コンパイル段階ではコードをツリーに解析し、実行段階になるとツリーに従って実行されることがわかります。コンパイルによって形成されます。 github で core-decorators.js を検索できます。このライブラリはデコレーターの例です。