<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function Peon(number) {
this.number = number;
this.inc = function() {
number=number+1;
};
return true;
}
var p=new Peon(10);
function returnNumber() {
p.inc();
alert(p.number);
}
</SCRIPT>
</HEAD>
<BODY>
<INPUT id="b00" TYPE="button" Value="Click" onClick="returnNumber()">
</BODY>
</HTML>
이 코드는 의도 한대로 작동하지 않습니다. 여기"this"가없는 자바 스크립트 객체의 변수에 액세스
this.number=this.number+1;
은, 사소한 선택을 작성하지 않고도 그러나이 있지 않는 더 큰 코드에서 작동 할 수있는 방법이 있나요. *이 더 많은 읽을 수 있도록합니다. 가능한가?
Crockford의 개인 회원 패턴은 그의 웹 사이트 http://javascript.crockford.com/private.html에서 읽을 수있다. 당신이 많은 Peons를 가지게된다면이 private 멤버 패턴은 속성을 사용하는 것보다 훨씬 더 많은 메모리를 소비한다는 것을 알아 두는 것이 중요합니다 ** 왜냐하면 각각의 개별 객체는 두 함수 모두의 * 자신의 복사본을 가질 것이기 때문입니다 생성자 내에서 정의됩니다. 그것들은 객체간에 공유되거나 공유 될 수 없습니다. 따라서 프라이버시와 메모리 사용 간의 절충이 필요합니다. 메모리 소비는 IE와 Firefox의 주요 문제입니다. 당신이 단지 몇 개의 Peons를 가질 것이라면, 그것은 중요하지 않습니다. –
감사합니다, 이것은 내가 찾고 있던 것입니다. –
'return true'은 실제로 생성자의 끝에서 불필요하고 본질적으로 무시되지만 원시 객체가 아닌 객체를 반환하면 무시되지 않고 새로운 객체가 아닌 객체를 반환합니다. Peon' 개체. –