ホームページ  >  に質問  >  本文

javascript - これはオブジェクト リテラル関数ではないでしょうか?なぜ新たな初期化が必要なのでしょうか?

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

淡淡烟草味淡淡烟草味2663日前836

全員に返信(4)返信します

  • 学习ing

    学习ing2017-07-05 10:54:40

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

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

    リーリー

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

    返事
    0
  • 高洛峰

    高洛峰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 がクラスを追加したとしても、それらは単なる構文上の糖衣です:

    リーリー

    返事
    0
  • 女神的闺蜜爱上我

    女神的闺蜜爱上我2017-07-05 10:54:40

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

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

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

    返事
    0
  • 習慣沉默

    習慣沉默2017-07-05 10:54:40

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

    返事
    0
  • キャンセル返事