JavaScript のカプセル化を理解する
カプセル化は、オブジェクトの内部データ表現と実装の詳細を隠すこととして定義できます。情報の隠蔽はカプセル化によって強制できます。
JavaScript には、プライベート メンバーを宣言するための明示的なキーワードはありません。したがって、カプセル化/情報隠蔽を実現したい場合は、別のアイデアから始める必要があります。クロージャの概念を使用して、オブジェクト内からのみアクセスできるメソッドとプロパティを作成し、カプセル化要件を達成できます。
基本的なメソッド
一般的に言えば、カプセル化の目的を達成するために 3 つのメソッドを使用することを学びます。
this.XXX を使用して変数を宣言し、getXXX、setXXX などの値の取得および代入メソッドを宣言します。
this._XXX を使用して変数を宣言し、getXXX、setXXX などの値の取得および代入メソッドを宣言します。
これを行うには、「関数スコープ」の概念を使用します。
1. ポータルを開きます
var Book = function(isbn,title,author){ this.setIsbn(isbn); this.setTitle(title); this.setAuthor(author); }; Book.prototype = { setIsbn: function(isbn){ this.isbn = isbn; }, getIsbn: function(){ return this.isbn; }, setTitle: function(title){ this.title = title; }, getTitle: function(){ return this.title; }, setAuthor: function(author){ this.author = author; }, getAuthor: function(){ return this.author; } };
カプセル化を実現するには、このメソッドを使用します。ただし、評価者と割り当て者はプライベート プロパティを保護するために実装されています。ただし、実際の使用においては、プライベートプロパティには外部からアクセスできるため、基本的にカプセル化は実装されていません。
2. 命名規則を使用して区別する
var Book = function(isbn,title,author){ this.setIsbn(isbn); this.setTitle(title); this.setAuthor(author); }; Book.prototype = { setIsbn: function(isbn){ this._isbn = isbn; }, getIsbn: function(){ return this._isbn; }, setTitle: function(title){ this._title = title; }, getTitle: function(){ return this._title; }, setAuthor: function(author){ this._author = author; }, getAuthor: function(){ return this._author; } };
最初の類似のメソッドでこのメソッドを使用しますただし、プライベート プロパティの使用を保護するために異なる名前が使用される点が異なります。ただし、実際のアプリケーションの観点からは、まだカプセル化が実装されていません。
3. 関数スコープの使用
var Book = function(newIsbn,newTitle,newAuthor){ var isbn,title,author; this.setIsbn=function(newIsbn){ isbn = newIsbn; }; this.getIsbn=function(){ return isbn; }; this.setTitle=function(newTitle){ title = newTitle; }; this.getTitle=function(){ return title; }; this.setIsbn=function(newAuthor){ author = newAuthor; }; this.getIsbn=function(){ return author; }; }
は JavaScript 関数で宣言されます 変数はスコープされます, したがって、このメソッドを使用すると、外部からプライベート プロパティへの直接アクセスが回避されます。基本的にはパッケージ化に必要な内容を実現します。
ここで注目すべきは、this.XXX と var を使用して関数内で変数を宣言できることです。違いは、this.XXX を使用して宣言された変数は外部からアクセスできることです。 var を使用して宣言された変数は関数スコープによって保護され、関数の外部から直接アクセスすることはできません。
4. 関数スコープの変換を使用します。
var Book = (function(){ // ...其他静态方法 return function(newIsbn,newTitle,newAuthor){ var isbn,title,author; this.setIsbn=function(newIsbn){ isbn = newIsbn; }; this.getIsbn=function(){ return isbn; }; this.setTitle=function(newTitle){ title = newTitle; }; this.getTitle=function(){ return title; }; this.setIsbn=function(newAuthor){ author = newAuthor; }; this.getIsbn=function(){ return author; }; }; })();
このメソッドは、次のメソッドを直接返します。コンストラクター。ここでのコンストラクターはインライン関数です。
このメソッドの利点は、「メモリ内にコピーが 1 つだけ存在することです。他の静的メソッドはコンストラクターの外部で宣言されるため、特権メソッドではありません。」
メソッドを判断することです。静的メソッドとして設計するかどうかの原則は、「このメソッドがプライベート プロパティにアクセスするかどうか」です。必要ない場合は、コピーが 1 つだけ作成されるため、静的メソッドとして設計する方が効率的です。
定数
定数を実装するには、「ゲッターのみ、アサイナーなし」アプローチを使用できます。
// 1. var Book = function(){ var constants = ["key1": "1","key2": "2","key3": "3"]; this.getConstant = function(key){ return constants[key]; }; }; Book.getConstant("key1"); // 2. var Book = (function(){ var constants = ["key1": "1","key2": "2","key3": "3"]; var con = function(){}; con.getConstant = function(name){ return constants[name]; }; return con; })(); Book.getConstant("key1");
長所と短所
長所
カプセル化により内部データの整合性が保護されます。
カプセル化により、モジュール間の結合が弱まり、オブジェクトの再利用性が向上します。名前空間の競合;
...
2. 欠点は複雑な処理に関連する必要があります。スコープ チェーンによりエラーのスケジュールが難しくなります。
JavaScript はカプセル化をネイティブにサポートしていないため、JavaScript でのカプセル化の実装には複雑さの問題があります。
上記は次のとおりです。この記事の内容全体が皆さんの学習に役立つことを願っています。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

4月17日の当サイトのニュースによると、TrendForceは最近、Nvidiaの新しいBlackwellプラットフォーム製品に対する需要は強気で、2024年にはTSMCのCoWoSパッケージング総生産能力が150%以上増加すると予想されるレポートを発表した。 NVIDIA Blackwell の新しいプラットフォーム製品には、B シリーズ GPU と、NVIDIA 独自の GraceArm CPU を統合する GB200 アクセラレータ カードが含まれます。 TrendForce は、サプライチェーンが現在 GB200 について非常に楽観的であることを確認しており、2025 年の出荷台数は 100 万台を超え、Nvidia のハイエンド GPU の 40 ~ 50% を占めると予想されています。 Nvidiaは今年下半期にGB200やB100などの製品を提供する予定だが、上流のウェーハパッケージングではさらに複雑な製品を採用する必要がある。

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

このWebサイトは7月9日、AMD Zen5アーキテクチャの「Strix」シリーズプロセッサには2つのパッケージングソリューションがあり、小型のStrixPointはFP8パッケージを使用し、StrixHaloはFP11パッケージを使用すると報じた。出典: videocardz 出典 @Olrak29_ 最新の事実は、StrixHalo の FP11 パッケージ サイズが 37.5mm*45mm (1687 平方ミリメートル) であり、これは Intel の AlderLake および RaptorLake CPU の LGA-1700 パッケージ サイズと同じであるということです。 AMD の最新の Phoenix APU は、サイズ 25*40mm の FP8 パッケージング ソリューションを使用しています。これは、StrixHalo の F
