環境
new
一部の関数はプレフィックスでのみ呼び出すことができることに気付きました。それなしで呼び出すと、エラーIllegal Invocationがスローされます。Image
以下は、さまざまな方法で が呼び出されたときにコンソールがどのように反応したかを示す 2 つの例です。
-> new Image();
<- <img>
-> Image();
<- TypeError: DOM object constructor cannot be called as a function.
さらに興味深いことに、よく観察すると、これらのタイプの関数は関数のように見えますが、そうではありません。Image
たとえば、typeof
コマンドはそれが関数であることを明らかにしますImage
が、のコンストラクターはImage
それがオブジェクトであることを暗示します。
これは、以下のようなほとんどの構築関数とは大きく異なります。
function Foo(){
this.identity = 'Bar';
}
この関数は、とFoo
の 2 つの方法で呼び出すことができます。これは関数とは大きく異なります。new Foo()
Foo()
Image
質問
関数でのこのアクションは、Image
ほとんどの構築関数とは大きく異なります。これはどのように可能ですか?new
これが、プレフィックスを で使用する必要がある理由Image
ですか? さらに重要なのは、このタイプの機能を再現できるかどうかです。