javascript - これはオブジェクト リテラル関数ではないでしょうか?なぜ新たな初期化が必要なのでしょうか?
淡淡烟草味
淡淡烟草味 2017-07-05 10:52:40
0
4
833

これはコンストラクターではないことを覚えていますが、this と new がコンストラクターとして同じように使用されるのはなぜですか?

淡淡烟草味
淡淡烟草味

全員に返信(4)
学习ing

JavaScript の関数はすべて new 关键字调用,它都可以被称作 构造函数 を使用するだけです。

new キーワードを使用して関数を呼び出すと、オブジェクトが関数内で暗黙的に宣言され、次にそのオブジェクトが this に割り当てられ、最後に new キーワードを使用して著者の book メソッドを呼び出すと、これが暗黙的に返されます。 、以下の処理に相当します。

リーリー

ここの「o」は、実際には私たちが普段目にするこのオブジェクトです。

いいねを押す +0
小葫芦

JavaScript にはクラスやコンストラクターはありません。

リーリー

オブジェクトを作成するにはnewを使用してください

リーリー

js にはコンストラクターはありませんが、この単語は MDN ドキュメントでも使用されています: https://developer.mozilla.org...

コードnew foo(...)が実行されるとき:

  • 新しいオブジェクトが作成されます。 foo.prototype.

  • から継承します
  • コンストラクターfoo 被执行。执行的时候,相应的传参会被传入,同时上下文(this)会被指定为这个新实例。new foo 等同于 new foo()は、パラメーターが渡されない場合にのみ使用できます。

  • コンストラクターが「オブジェクト」を返した場合、このオブジェクトはnew出来的结果。如果构造函数没有返回对象,那么new結果全体を置き換えます。コンストラクターがオブジェクトを返さない場合、結果はステップ 1 で作成されたオブジェクトになります。 ps: 通常、コンストラクターは値を返しませんが、ユーザーがこの戻り値をオーバーライドしたい場合は、次のことを選択できます。通常のオブジェクトを返して上書きします。もちろん、配列もオブジェクトであるため、配列を返すと上書きされます。

ES6 がクラスを追加したとしても、それらは単なる構文上の糖衣です:

リーリー
いいねを押す +0
女神的闺蜜爱上我

コンストラクターの概念を誤解しています。

実際には、js に「コンストラクター」という用語は存在しないはずですが、関数の構築方法として理解する必要があります。これは、任意の関数を使用でき、任意の関数を「コンストラクター」と呼ぶことができることを意味します。いわゆる「コンストラクター」を作成したとき、それと通常の関数との違いに気づきましたか?いいえ、それらは単なる通常の関数です。 new

上記、es6の矢印機能を除く。

いいねを押す +0
習慣沉默

js のすべての関数はコンストラクターと同等です (真の ES6 アロー関数を除く)。
やあ、素晴らしいjs!

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!