検索

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

javascript - jsのシングルトンモードに関する疑問

次のコード

リーリー

クリックすると原文が表示されます

######質問:###### リーリー

その後、 varinstance = this;、これは別のオブジェクトを参照していますか?コンストラクターを書き換えた後、返されるインスタンスは別のオブジェクトではないでしょうか?なぜ最終的には等しいのでしょうか

怪我咯怪我咯2747日前729

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

  • 某草草

    某草草2017-06-30 10:00:37

    コンストラクターを書き換えた後、オブジェクトが返されるため、このオブジェクトは新しいコンストラクターで生成したオブジェクトを上書きします。

    返事
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-30 10:00:37

    @mpccc が正しいです。

    コンストラクターがオブジェクトを返す場合、新しいオブジェクトがオブジェクトになります。

    Secret Gardenのコンストラクターセクションをご覧ください

    返事
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-06-30 10:00:37

    私も初心者なので、答えてみます、間違っていても責めないでください

    まず、これは別のオブジェクトを参照していますか
    コンストラクターが初めて呼び出されるとき、空のオブジェクトが生成され、関数内の this がこの空のオブジェクトを指し、コードが実行され、最後にこのオブジェクトが返されます、それはuniです。

    2 回目の呼び出し中、最初の関数の書き換えにより、このクロージャの内部インスタンスは、2 回目の実行時 < When code>new Universe() を指しました。 でクロージャを実行すると、空のオブジェクトも生成されますが、そのオブジェクトはそれを使用せず、クロージャ内のインスタンス ( uni,当第二次执行new Universe()的时候你执行的是一个闭包,也会产生一个空的对象,但那个对象并没有用到它,反而是直接返回了闭包内部的instance也就是uni ) を直接返します。

    それでuni2 === uni.

    返事
    0
  • 迷茫

    迷茫2017-06-30 10:00:37

    別の質問ですが、このようにシングルトン パターンを記述するのは少し冗長です。固有のオブジェクトを作成するためにコンストラクターを作成する必要はありません

    。 リーリー

    返事
    0
  • ringa_lee

    ringa_lee2017-06-30 10:00:37

    一度新規作成した後は、コメントを書いてコンストラクターを書き直したのではないでしょうか? var instance = this; という行はなくなり、当然インスタンスは変更されません

    リーリー

    返事
    0
  • 阿神

    阿神2017-06-30 10:00:37

    初めて実行する場合new Universe()的时候,确实产生了一个新的this,并且将Universe构造函数改写了,之后再次调用这个new Universe()的时候,就只会return instance、新しいオブジェクトは生成されません。

    返事
    0
  • キャンセル返事