オブジェクト指向 言語を学習した JavaScript 使用者は、class{} などのクラスや、定義された一連のメソッドを使用したことがあります しかし、 JS を学ぶ初心者はよくこの文を目にします。つまり、JavaScript はオブジェクト指向言語です。しかし、いくら学んでも、オブジェクト指向プログラミングについてはよくわかりません。私も同様です。ここ数日で、js オブジェクト指向プログラミングに取り組み始めました。js クラスについての私の理解を話しましょう。 。 。
1. 単純なクラス
var Person = function(name, age){ this.name = name; this.age = age; this.sayName = function(){ console.log(this.name); }; }クラスらしくないと思われる場合は、次のようにすることができます コンストラクター
オブジェクトの作成パターンを見てください
上記の例では、これをベースに改善できます。var Person = function(name, age){ //共有属性 this.name = name; this.age = age; //共有方法 this.sayName = function(){ console.log(this.name); }; }上記のシミュレーション方法は、js でクラスの作成を実現するために使用されます。これに基づいて、現状に満足せず、js のカプセル化に役立つ全体をカプセル化したいと考えています。 。
3. jsクラスをカプセル化する
ここではクロージャを使用して実装します。 まず、クロージャの概念を説明します。 実装は次のとおりです:
var Person = function(name, age){ //共有属性 this.name = name; //共有方法 this.sayName = function(){ console.log(this.name); }; //静态私有属性(只能用于内部调用) var home = "China"; //静态私有方法(只能用于内部调用) function sayHome(){ console.log(home); } //构造器 this.setAge = function(age){ console.log(age + 12); }; this.setAge(age); }//静态方法(只能被类来访问)Person.sayAge = function(){ console.log("your age is 12"); }//静态属性(只能被类来访问)Person.drink = "water";//静态共有方法(类和实例都可以访问)Person.prototype.sayWord = function(){ console.log("ys is a boy"); }呼び出しは次のとおりです:
var Person = (function(){ //静态私有属性方法 var home = "China"; function sayHome(name){ console.log(name + "'s home in " + home); } //构造函数 function _person(name, age){ var _this = this; //构造函数安全模式,避免创建时候丢掉new关键字 if(_this instanceof _person){ //共有属性, 方法 _this.name = name; _this.getHome = function(){ //内部访问私有属性,方法 sayHome(_this.name); }; _this.test = sayHome; //用于测试 //构造器 _this.setAge = function(age){ _this.age = age + 12; }(age); }else{ return new _person(name, age); } } //静态共有属性方法 _person.prototype = { constructor: _person, drink: "water", sayWord: function(){ console.log("ys is a boy"); } } return _person; })();上記のコードでは、js概要:1 を使用してクラスを実装しました。一部のパブリック プロパティとメソッドは静的に設定できるため、真の共有を実現するためにインスタンス化されるたびに追加のメモリ リソースを割り当てる必要はありません。
2. 一部のパブリック属性メソッドは、内部プログラム処理中にのみ共有したい場合、静的なプライベート属性メソッドに設定します。
3. 一部のパブリック属性メソッドは、インスタンス オブジェクト間で共有されるように設定します。 .
上記はこの記事のすべての内容です。あまり詳しくない場合は、両方を自分で実装することができ、簡単に習得できます。 関連する推奨事項:
JavaScriptカプセル化のさまざまな記述方法
以上がJavaScript を使用してクラスをカプセル化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。