これはコンストラクターではないことを覚えていますが、this と new がコンストラクターとして同じように使用されるのはなぜですか?
JavaScript の関数はすべて new 关键字调用,它都可以被称作 构造函数 を使用するだけです。
new
构造函数
new キーワードを使用して関数を呼び出すと、オブジェクトが関数内で暗黙的に宣言され、次にそのオブジェクトが this に割り当てられ、最後に new キーワードを使用して著者の book メソッドを呼び出すと、これが暗黙的に返されます。 、以下の処理に相当します。
ここの「o」は、実際には私たちが普段目にするこのオブジェクトです。
JavaScript にはクラスやコンストラクターはありません。
オブジェクトを作成するにはnewを使用してください
js にはコンストラクターはありませんが、この単語は MDN ドキュメントでも使用されています: https://developer.mozilla.org...
コードnew foo(...)が実行されるとき: 新しいオブジェクトが作成されます。 foo.prototype.から継承します コンストラクターfoo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。new foo 等同于 new foo()は、パラメーターが渡されない場合にのみ使用できます。 コンストラクターが「オブジェクト」を返した場合、このオブジェクトはnew出来的结果。如果构造函数没有返回对象,那么new結果全体を置き換えます。コンストラクターがオブジェクトを返さない場合、結果はステップ 1 で作成されたオブジェクトになります。 ps: 通常、コンストラクターは値を返しませんが、ユーザーがこの戻り値をオーバーライドしたい場合は、次のことを選択できます。通常のオブジェクトを返して上書きします。もちろん、配列もオブジェクトであるため、配列を返すと上書きされます。
コードnew foo(...)が実行されるとき:
new foo(...)
新しいオブジェクトが作成されます。 foo.prototype.
foo.prototype
コンストラクターfoo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。new foo 等同于 new foo()は、パラメーターが渡されない場合にのみ使用できます。
foo
this
new foo
new foo()
コンストラクターが「オブジェクト」を返した場合、このオブジェクトはnew出来的结果。如果构造函数没有返回对象,那么new結果全体を置き換えます。コンストラクターがオブジェクトを返さない場合、結果はステップ 1 で作成されたオブジェクトになります。 ps: 通常、コンストラクターは値を返しませんが、ユーザーがこの戻り値をオーバーライドしたい場合は、次のことを選択できます。通常のオブジェクトを返して上書きします。もちろん、配列もオブジェクトであるため、配列を返すと上書きされます。
ES6 がクラスを追加したとしても、それらは単なる構文上の糖衣です:
コンストラクターの概念を誤解しています。
実際には、js に「コンストラクター」という用語は存在しないはずですが、関数の構築方法として理解する必要があります。これは、任意の関数を使用でき、任意の関数を「コンストラクター」と呼ぶことができることを意味します。いわゆる「コンストラクター」を作成したとき、それと通常の関数との違いに気づきましたか?いいえ、それらは単なる通常の関数です。 new
js のすべての関数はコンストラクターと同等です (真の ES6 アロー関数を除く)。 やあ、素晴らしいjs!
JavaScript の関数はすべて
new
关键字调用,它都可以被称作构造函数
を使用するだけです。new キーワードを使用して関数を呼び出すと、オブジェクトが関数内で暗黙的に宣言され、次にそのオブジェクトが this に割り当てられ、最後に new キーワードを使用して著者の book メソッドを呼び出すと、これが暗黙的に返されます。 、以下の処理に相当します。
リーリーここの「o」は、実際には私たちが普段目にするこのオブジェクトです。
JavaScript にはクラスやコンストラクターはありません。
リーリーオブジェクトを作成するには
リーリーnew
を使用してくださいjs にはコンストラクターはありませんが、この単語は MDN ドキュメントでも使用されています: https://developer.mozilla.org...
ES6 がクラスを追加したとしても、それらは単なる構文上の糖衣です:
リーリーコンストラクターの概念を誤解しています。
実際には、js に「コンストラクター」という用語は存在しないはずですが、関数の構築方法として理解する必要があります。これは、任意の関数を使用でき、任意の関数を「コンストラクター」と呼ぶことができることを意味します。いわゆる「コンストラクター」を作成したとき、それと通常の関数との違いに気づきましたか?いいえ、それらは単なる通常の関数です。
上記、es6の矢印機能を除く。new
js のすべての関数はコンストラクターと同等です (真の ES6 アロー関数を除く)。
やあ、素晴らしいjs!