프로그래밍 언어/JAVA

자바 스크립트 private 메서드

Rateye 2021. 11. 1. 10:25
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_fooduse_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
반응형