모듈 패턴 공개에서 개인 변수 노출
-
12-12-2019 - |
문제
공개 모듈 패턴을 구현하려고 하는데 수정된 개인 속성을 노출할 수 없습니다.
var myRevealingModule = (function(){
var name = 'Diogo';
function setName () {
name = name + ' Cardoso';
}
return {
fullName: name,
set: setName
};
}());
// Sample usage:
myRevealingModule.set();
console.log(myRevealingModule.fullName); // "Diogo" instead of the excepted "Diogo Cardoso".
해결책
return {
fullName: name,
set: setName
};
그것은 가치 ~의 name
그리고 setName
.변수에 대한 참조를 생성하지 않습니다.효과적으로, name
복사됩니다.
해당하는 항목을 만들어야 합니다. getName
메소드를 사용하면 변수에 대한 참조를 유지할 수 있도록 클로저를 활용할 수 있습니다.
다른 팁
객체 또는 배열의 값이 속성 인 경우 객체 또는 배열을 내보낼 수 있고 내보내기는 참조로이므로 사용자가 업데이트 된 변경 사항이 표시됩니다.수출 변수의 일반 패턴은 스칼라 / 객체 복사 / 참조 이분법을 갖추고 있기 때문에 조금 위험합니다.
제휴하지 않습니다 StackOverflow