javascript - js의 싱글턴 모드에 대한 의심
怪我咯
怪我咯 2017-06-30 09:58:37
0
6
740

다음 코드

으아아아

클릭하시면 원문을 보실 수 있습니다

질문:

으아아아

그래서 var instance = this;에서 이것은 다른 객체를 가리키는 것인가요? 그러면 생성자를 다시 작성한 후 반환된 인스턴스는 다른 객체가 아닌가요? 결국 둘은 왜 평등한 걸까

怪我咯
怪我咯

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

모든 응답(6)
某草草

생성자를 다시 작성하면 객체가 반환되기 때문에 이 객체는 생성한 객체를 새 생성자로 덮어쓰게 됩니다.

扔个三星炸死你

@mpccc 맞습니다.

생성자가 객체를 반환하는 경우 new에서 나오는 객체는 이 객체입니다.

시크릿 가든의 생성자 섹션을 살펴보실 수 있습니다

过去多啦不再A梦

저도 초보라서 답변해드릴테니 틀려도 비난하지 마세요

먼저 생성자가 처음 호출되면 빈 객체가 생성되고 함수 내부의 this가 이 빈 객체를 가리킨 다음 코드가 실행되고 마지막으로 이 객체가 반환됩니다. , 즉
입니다. uni

두 번째 호출 중에 첫 번째 함수를 다시 작성했기 때문에 이 클로저의 내부 인스턴스가 첫 번째 호출 중에 생성된 개체를 가리켰습니다

. 에서는 빈 객체를 생성하는 클로저를 실행하지만 해당 객체는 이를 사용하지 않고 대신 클로저 내부의 인스턴스, 즉 uni,当第二次执行new Universe()的时候你执行的是一个闭包,也会产生一个空的对象,但那个对象并没有用到它,反而是直接返回了闭包内部的instance也就是uni 를 직접 반환합니다.

그래서uni2 === uni.

迷茫

또 다른 질문입니다. 이와 같은 싱글턴 패턴을 작성하는 것은 약간 중복됩니다. 고유한 객체를 생성하려면 생성자를 생성할 필요가 없습니다

. 으아악
ringa_lee

주석을 작성하고 생성자를 다시 작성하지 않았나요? new를 한 번 만든 후에는 더 이상 var 인스턴스 = this 코드 줄이 없으며 인스턴스는 자연스럽게 변경되지 않습니다. 으아악

阿神

처음 실행new Universe()的时候,确实产生了一个新的this,并且将Universe构造函数改写了,之后再次调用这个new Universe()的时候,就只会return instance하면 새로운 객체가 생성되지 않습니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿