728x90
반응형
질문 : 자바 스크립트 비공개 메서드
공용 메서드로 JavaScript 클래스를 만들려면 다음과 같이합니다.
function Restaurant() {}
Restaurant.prototype.buy_food = function(){
// something here
}
Restaurant.prototype.use_restroom = function(){
// something here
}
이렇게하면 내 수업의 사용자가 다음을 수행 할 수 있습니다.
var restaurant = new Restaurant();
restaurant.buy_food();
restaurant.use_restroom();
buy_food
및 use_restroom
메소드로 호출 할 수 있지만 클래스 사용자가 외부 적으로 호출 할 수없는 비공개 메소드를 생성하려면 어떻게해야합니까?
즉, 메서드 구현이 다음을 수행 할 수 있기를 바랍니다.
Restaurant.prototype.use_restroom = function() {
this.private_stuff();
}
그러나 이것은 작동하지 않습니다.
var r = new Restaurant();
r.private_stuff();
private_stuff
를 private 메서드로 정의하여이 두 가지가 모두 사실입니까?
Doug Crockford의 글 을 몇 번 읽었지만 "private"메서드는 public 메서드에 의해 호출 될 수 있고 "privileged"메서드는 외부 적으로 호출 될 수있는 것 같지 않습니다.
답변
할 수 있지만 단점은 프로토 타입의 일부가 될 수 없다는 것입니다.
function Restaurant() {
var myPrivateVar;
var private_stuff = function() { // Only visible inside Restaurant()
myPrivateVar = "I can set this here!";
}
this.use_restroom = function() { // use_restroom is visible to all
private_stuff();
}
this.buy_food = function() { // buy_food is visible to all
private_stuff();
}
}
출처 : https://stackoverflow.com/questions/55611/javascript-private-methods
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
Java에서 함수를 매개 변수로 전달하는 방법 (0) | 2021.11.02 |
---|---|
Jackson JSON 및 Hibernate JPA 문제가있는 무한 재귀 (0) | 2021.11.02 |
Kotlin 소스 파일을 자바 소스 파일로 변환하는 방법 (0) | 2021.11.01 |
Java 8 스트림을 배열로 변환하는 방법 (0) | 2021.11.01 |
자바 스크립트 객체의 쿼리 문자열 인코딩 (0) | 2021.10.21 |