私は、多くの場合、すべての HTMLElements のメソッドを両方の方法で登録できました。
気になるのですが、何か違いはありますか?
ある方法を他の方法より優先する必要がありますか? それを行う正しい方法は
何ですか?
2 に答える
プロトタイプを使用すると、プロトタイプ チェーン内のすべてのオブジェクトで関数を使用できるようになります。基本的にクラスを拡張します。もう1つは、現在の要素にプロパティを追加するだけです。しかし、Felix が示唆するように、正しいことは、これをまったく行わないことです。
JavaScript はプロトタイプ ベースの言語であり、クラス ベースの言語ではないため、キーワード.prototype.variable
または.__proto__.variable
(Math の場合) を使用してプロトタイプに直接アクセスし (クラス ベース言語のクラス定義のように)、それを変更してすべてのインスタンスに影響を与えます。プロトタイプが変更される前に作成されています。一方、プロトタイプにアクセスしない .variable は、指定されたインスタンスにのみ影響します。
つまり、「HTMLElement.prototype.someFunc =」は、すべての HTMLElement (および HTMLElement から継承するプロトタイプ) が someFunc にアクセスできるようにします。また、HTMLElement.someFunc は、HTMLELement の特定のインスタンスが someFunc にアクセスできるようにするためにのみ使用する必要があります。