オブジェクトの作成
まず、オブジェクト指向プログラミング (OOP) テクノロジを使用して、多くの場合、各モジュールが特定の機能を提供し、各モジュールが分離され、完全に独立していることを理解しましょう。他のモジュールから。このモジュール型プログラミングのアプローチにより、優れた多様性が提供され、コードを再利用する機会が大幅に増加します。この問題をさらに詳しく説明するために、コンピューター上の一流のレーシング カーの高性能アプリケーションを考えてみましょう。従来のプログラミング手法を使用すると、車は 1 つのユニットになります。車を改善したい場合は、ユニット全体を交換するか、メーカーに送り返すか、自動車の専門家にアップグレードしてもらうか、新しい車を購入する必要があります。 OOP テクノロジーを使用すると、弓のこで車体を切断する必要がなく、メーカーから新しいエンジンを購入し、指示に従って自分で交換するだけで済みます。 ただし、ほとんどの議論は、JavaScript は直接的なオブジェクト指向言語ではないが、継承、ポリモーフィズム、カプセル化など、オブジェクト指向言語でのみ実行できる多くのことをシミュレーションを通じて実行できるというものです。 (できないことはありません。思いつかないだけです)
//以下三种构造对象的方法 //new Object,实例化一个Object var a=new Object(); a.x=1,a.y=2; //对象直接量 var b={x:1,y:2}; //定义类型 function Point(x,y){ //类似于C#中的类 this.x=x; this.y=y; } var p=new Point(1,2); //实例化类
最初の方法は、基本的なオブジェクトを構築し、属性を直接追加することによって実現されます。 2 番目の方法は、最初の方法と似ており、ショートカットとみなすことができます。 3 番目のメソッドでは、「クラス」に基づいて、同じ型の複数のオブジェクトを作成できます
オブジェクト属性 (パブリックおよびプライベート) のカプセル化
例で説明します
function List(){
var m_elements=[]; //プライベートメンバー、オブジェクト外からはアクセスできません ここでvar宣言がない場合はm_elementsがグローバル変数となり、alert(m_elements[0)のように外部から直接アクセスできます。 ])
m_elements=Array.apply(m_elements,arguments); //此处模拟getter,使用时alist.length; //等价于getName()方式:this.length=function(){return m_elements.length;},使用时 alist.length(); //公有属性,可以通过"."运算符或下标来访问 this.length={ valueOf:function(){ return m_elements.length; }, toString:function(){ return m_elements.length; } } //公有方法,此方法使用得alert(alist)相当于alert(alist.toString()) this.toString=function(){ return m_elements.toString(); } //公有方法 this.add=function(){ m_elements.push.apply(m_elements,arguments); } //私有方法如下形式,这里涉及到了闭包的概念,接下来继续说明 //var add=function()或function add() //{ //m_elements.push.apply(m_elements,arguments); //} } var alist=new List(1,2,3); dwn(alist); //=alert(alist.toString()),输出1,2,3 dwn(alist.length); //输出3 alist.add(4,5,6); dwn(alist); //输出1,2,3,4,5,6 dwn(alist.length); //输出6
属性とメソッドの種類
javascript ここで、オブジェクトのプロパティとメソッドは、プライベート プロパティ (プライベート プロパティ)、動的パブリック プロパティ (動的パブリック プロパティ)、静的パブリック プロパティ/プロトタイプ プロパティ (静的パブリック プロパティまたはプロトタイプ プロパティ)、静的プロパティ(静的プロパティまたはプロトタイプ プロパティ)クラス属性)。プライベート プロパティは外部からは完全にアクセスできず、内部ゲッターとセッターを介してアクセスできます (両方のシミュレーション)。動的パブリック プロパティは外部からアクセスでき、各オブジェクト インスタンスはコピーを保持し、相互に影響しません。各オブジェクト インスタンスの一意のコピーが共有されます。クラス属性はインスタンスの属性としては扱われず、クラスの属性としてのみ扱われます。
以下は例です:
//动态公有类型,静态公有类型(原型属性) function myClass(){ var p=100; //private property this.x=10; //dynamic public property } myClass.prototype.y=20; //static public property or prototype property,动态为myClass的原型添 加了属性,将作用于所有实例化了的对象,注意这里用到了prototype,这是一个非常有用的东东 //要想成为高级javascript阶段,prototype和闭包必须得理解和适当应用 myClass.z=30; //static property var a=new myClass(); dwn(a.p) //undefined dwn(a.x) //10 dwn(a.y) //20 a.x=20; a.y=40; dwn(a.x); //20 dwn(a.y); //40 delete(a.x); //删除对象a的属性x delete(a.y); //删除对象a的属性y dwn(a.x); //undefined dwn(a.y); //20 静态公有属性y被删除后还原为原型属性y dwn(a.z); //undefined 类属性无法通过对象访问 dwn(myClass.z);
以上がJavaScript オブジェクトの作成、関数のカプセル化、属性のコード例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。