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