ホームページ >ウェブフロントエンド >jsチュートリアル >強化されたカプセル化のために JavaScript でプライベート メソッドをシミュレートするにはどうすればよいでしょうか?

強化されたカプセル化のために JavaScript でプライベート メソッドをシミュレートするにはどうすればよいでしょうか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 15:26:02230ブラウズ

How can we simulate private methods in JavaScript for enhanced encapsulation?

JavaScript でのパブリック メソッドとプライベート メソッドのブリッジング

パブリック メソッドはクラス機能への外部アクセスを提供しますが、プライベート メソッドはクラス内で分離された操作を提供します。 JavaScript はプライベート メソッドをネイティブにサポートしていませんが、革新的なアプローチでこの概念を模倣できます。

次のシナリオを考えてみましょう:

<code class="javascript">function Restaurant() {}

Restaurant.prototype.buy_food = function(){
   // something here
}

Restaurant.prototype.use_restroom = function(){
   // something here
}</code>

この例では、buy_food と use_restroom の両方が外部からアクセスできるパブリック メソッドです。クラス。これらのパブリック メソッドのみが呼び出すことができるプライベート メソッドを導入するにはどうすればよいですか?

ローカル関数を使用したプライベート メソッドの模倣

JavaScript には真のプライベート メソッドがありませんが、クラス コンストラクター内でローカル関数を作成できます。外部からアクセスできないもの。その方法は次のとおりです。

<code class="javascript">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();
    }
}</code>

この例では、private_stuff は Restaurant コンストラクター内のローカル関数です。これはプロトタイプの一部ではなく、use_restroom メソッドと buy_food メソッドによってのみアクセスできます。

このアプローチでは、パブリック メソッドと「プライベート」メソッドの間の望ましい分離が維持され、後者がクラス内でシームレスに動作できるようになります。

以上が強化されたカプセル化のために JavaScript でプライベート メソッドをシミュレートするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。