次のコード
クリックすると原文が表示されます
その後、 varinstance = this;、これは別のオブジェクトを参照していますか?コンストラクターを書き換えた後、返されるインスタンスは別のオブジェクトではないでしょうか?なぜ最終的には等しいのでしょうか
走同样的路,发现不同的人生
コンストラクターを書き換えた後、オブジェクトが返されるため、このオブジェクトは新しいコンストラクターで生成したオブジェクトを上書きします。
@mpccc が正しいです。
コンストラクターがオブジェクトを返す場合、新しいオブジェクトがオブジェクトになります。
Secret Gardenのコンストラクターセクションをご覧ください
私も初心者なので、答えてみます、間違っていても責めないでください
まず、これは別のオブジェクトを参照していますか コンストラクターが初めて呼び出されるとき、空のオブジェクトが生成され、関数内の this がこの空のオブジェクトを指し、コードが実行され、最後にこのオブジェクトが返されます、それはuniです。
uni
2 回目の呼び出し中、最初の関数の書き換えにより、このクロージャの内部インスタンスは、2 回目の実行時 new Universe() を指しました。 でクロージャを実行すると、空のオブジェクトも生成されますが、そのオブジェクトはそれを使用せず、クロージャ内のインスタンス ( uni,当第二次执行new Universe()的时候你执行的是一个闭包,也会产生一个空的对象,但那个对象并没有用到它,反而是直接返回了闭包内部的instance也就是uni ) を直接返します。
new Universe()
それでuni2 === uni.
uni2 === uni
別の質問ですが、このようにシングルトン パターンを記述するのは少し冗長です。固有のオブジェクトを作成するためにコンストラクターを作成する必要はありません
一度新規作成した後は、コメントを書いてコンストラクターを書き直したのではないでしょうか? var instance = this; という行はなくなり、当然インスタンスは変更されません
初めて実行する場合new Universe()的时候,确实产生了一个新的this,并且将Universe构造函数改写了,之后再次调用这个new Universe()的时候,就只会return instance、新しいオブジェクトは生成されません。
this
Universe
return instance
コンストラクターを書き換えた後、オブジェクトが返されるため、このオブジェクトは新しいコンストラクターで生成したオブジェクトを上書きします。
@mpccc が正しいです。
コンストラクターがオブジェクトを返す場合、新しいオブジェクトがオブジェクトになります。
Secret Gardenのコンストラクターセクションをご覧ください
私も初心者なので、答えてみます、間違っていても責めないでください
まず、これは別のオブジェクトを参照していますか
コンストラクターが初めて呼び出されるとき、空のオブジェクトが生成され、関数内の this がこの空のオブジェクトを指し、コードが実行され、最後にこのオブジェクトが返されます、それは
uni
です。2 回目の呼び出し中、最初の関数の書き換えにより、このクロージャの内部インスタンスは、2 回目の実行時 new Universe() を指しました。 でクロージャを実行すると、空のオブジェクトも生成されますが、そのオブジェクトはそれを使用せず、クロージャ内のインスタンス (
uni
,当第二次执行new Universe()
的时候你执行的是一个闭包,也会产生一个空的对象,但那个对象并没有用到它,反而是直接返回了闭包内部的instance也就是uni
) を直接返します。それで
uni2 === uni
.別の質問ですが、このようにシングルトン パターンを記述するのは少し冗長です。固有のオブジェクトを作成するためにコンストラクターを作成する必要はありません
。 リーリー一度新規作成した後は、コメントを書いてコンストラクターを書き直したのではないでしょうか? var instance = this; という行はなくなり、当然インスタンスは変更されません
リーリー初めて実行する場合
new Universe()
的时候,确实产生了一个新的this
,并且将Universe
构造函数改写了,之后再次调用这个new Universe()
的时候,就只会return instance
、新しいオブジェクトは生成されません。