모듈 패턴이나 공개 모듈 patten과 같은 '클래스'유형 JavaScript 함수를 작성하기 시작했습니다. 이것은 'new'의 사용을 피하고 어느 기능이 하나의 장소에서 공개되는지를 정의 할 수있게 해줍니다. 그러나이 패턴으로 공용 데이터 멤버를 사용하고 액세스하는 방법을 볼 수 없었습니다.JavaScript 생성자 함수에서 객체를 반환 할 때 ('new'를 피할 때) public 멤버를 구현하려면 어떻게해야합니까?
아래의 'id'멤버는 myobj.getId()를 통해 액세스 할 수 있지만 myobj.id는 정의되지 않습니다.
function setup(){
var myobj = MyObject();
myobj.initialize();
alert(myobj.getId()); // returns 3, as expected
alert(myobj.id); // returns undefined
}
function MyObject(){
var id;
function initialize(){
//do some stuff that initializes data including...
id = 3;
}
return{
initialize:initialize,
id:id,
getId:function(){ return id;}
}
}
initialize()에 설정된 값을 반환하도록 myobj.id를 작동시킬 방법이 없습니까?
, 대문자로 시작하는 함수를 생성자 (클래스 이름과 유사)'new'와 함께 사용하기위한 것입니다. 이와 같은 팩토리 함수는 소문자로 시작해야합니다. – jasongetsdown
@ jasongetsdown Javascript convention? 절대 들어 본적이 없어! –
@Josh 나는이 진술이 나타내는 것을 궁금해합니다 ... – galambalazs