javascript - jsのシングルトンモードに関する疑問
怪我咯
怪我咯 2017-06-30 09:58:37
0
6
725

次のコード

リーリー

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

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

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

怪我咯
怪我咯

走同样的路,发现不同的人生

全員に返信(6)
某草草

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

いいねを押す +0
扔个三星炸死你

@mpccc が正しいです。

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

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

いいねを押す +0
过去多啦不再A梦

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

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

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

それでuni2 === uni.

いいねを押す +0
迷茫

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

。 リーリー
いいねを押す +0
ringa_lee

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

リーリー
いいねを押す +0
阿神

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート