ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript オブジェクトの作成、関数のカプセル化、属性のコード例の詳細な説明

JavaScript オブジェクトの作成、関数のカプセル化、属性のコード例の詳細な説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-24 14:57:321938ブラウズ

オブジェクトの作成

まず、オブジェクト指向プログラミング (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 サイトの他の関連記事を参照してください。

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