1) 자바스크립트 객체 멤버 실험:
두 번째 중단점에서 개체 멤버의 존재:
한 문장: js 함수에 관해: 이것은 함수 외부에서 가장 가까운 수준에 있는 객체를 나타내고, 중첩된 함수의 내부 함수 내의 this는 창 객체를 나타냅니다.
단순변수와 객체변수의 차이점
.prototype으로 정의된 멤버를 사용하세요. 멤버가 단순 변수인 경우 각 개체 인스턴스에는 자체 복사본이 있습니다. (예: Man.prototype.noObejctVar)
.prototype으로 정의된 멤버를 사용하세요. 멤버가 개체 변수인 경우 각 개체 인스턴스는 개체의 동일한 복사본을 공유합니다. (예: Man.prototype.ManGhost) 왜 그런 차이가 있나요? ManGhost 변수와 noObjectVar 변수는 둘 다 .prototype을 사용하여 정의된 멤버입니다. 단지 유형이 다를 뿐이므로 액세스하고 사용하는 방법이 다릅니다. 단지 ManGhost 변수가 새로운 객체를 저장하고, noObjectVar 변수가 그 값(또는 특정 값에 대한 참조)을 저장한다는 것입니다. 즉, ManGhost는 이를 통해 객체를 조작할 수 있습니다. 참조 및 noObjectVar 변수 메모리 저장도 일종의 값 참조가 될 수 있지만 이 참조를 사용하여 작동할 수는 없습니다.
다른 시각으로 보기noObjectVar 변수는 문자열 객체에 대한 참조를 저장합니다.
a.noObjectVar="새 문자열 a"; 이는 noObjectVar가 원래 문자열 객체 참조에서 새 문자열 객체 참조를 가리킨다는 의미입니다. (새 문자열 객체가 원래 문자열 객체를 덮어쓴다고도 할 수 있습니다.)
a.ManGhost=new Ghost("a");
b.ManGhost=new Ghost("b");
이렇게 하면 a와 b 사이의 공유 객체에는 문제가 없습니다. 그러나 프로토타입 시 새 객체를 정의하는 것은 낭비입니다. 그러나 ManGhost에서 .prototype을 사용하는 것은 잘못되었습니다.
.prototype을 사용하여 멤버 함수와 공유 변수를 정의하는 것이 올바른 사용법입니다.
자바스크립트를 사용하여 클래스를 올바르게 정의하려면 [기술 메모] 클래스 사양을 정의하는 자바스크립트를 참조하세요