ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptオブジェクト指向体験【まとめ】_javascriptスキル

JavaScriptオブジェクト指向体験【まとめ】_javascriptスキル

WBOY
WBOYオリジナル
2016-05-16 18:58:55853ブラウズ

結局のところ、JavaScript 言語自体は高級言語ほど厳密ではありません。この記事を読む前に、C、Java、C# などの高級言語を理解し、オブジェクト指向プログラミングの基本的な知識を持っていることを願っています。
1. クラス定義:
function ClassName(){
}
クラスの定義形式は関数の定義形式と同じであることがわかります。
実際には、関数とクラスは使用される場合にのみ区別できます。たとえば、ページ内で別々に使用します:



2. クラスのメンバー:
function ClassName( ){
//パブリック変数を定義します
this.property1=0;
//パブリック メソッドを定義します
this.method1=function(){
//これが.a には値が割り当てられます
if(this.a != unknown)
alert(this.a);
}

//
this.method3 による別のメソッド定義=funcA;

//プライベートメンバーを定義します
var pram1=1;
var method2=function(){
alert('')
}
// funcA はメソッド method3 の処理関数です。
function funcA(){
alert('')
}
上記のコードをゆっくり説明しましょう:
で始まるものこのクラスのメンバーはすべてパブリックです。
例: property1 はクラスのプロパティ、method1 はクラスのメソッドです。
クラスのメンバーは var で定義する必要はなく、this プレフィックスのないメンバーはプライベート変数です。
例: pram1 はプライベート変数、method2 はプライベート メソッドです。
クラスの属性はクラス内で定義する必要はなく、初期化する必要のない属性は初期化する必要はありません。
例: Method1 では、クラス全体に a 属性が定義されていないため、オブジェクトの作成時に値を割り当てることができます。
var obj=new ClassName()
obj.a="hello javascript";
obj.method1();
クラスのメソッドは this.method=function() で定義できます。 {} (method1 メソッドなど)、
は this.method=funcName を通じて定義することもでき、メソッドは

クラスの継承など、特定の関数によって処理されるように指定されます。 :
function classA( ){
this.property1='hello';
this.method1=function (){
alert(this.property1)
}
}

function classB (){
}
//classA を継承
classB.prototype=new classA()

//classB に PI 属性を追加
classB .prototype.PI=3.1415926;
// showPI メソッドを classB に追加します
classB.prototype.showPI=function(){
alert(this.PI)
}プロトタイプ オブジェクトに classA のインスタンスを追加します。これにより、classB は classA のすべてのメンバーを継承します。
例: classB.prototype=new classA(); 同時に、次のように追加することもできます。プロトタイプを介してクラス外の新しいメンバーを追加します (これは、この言語では使用できない別の高度な関数です)。
例: classB.prototype.PI および classB.prototype.showPI

4.クラスメソッド:
クラスメソッドのオーバーロードはクラスのコンストラクター内で行われます。たとえば、クラス内に同じ名前を持つ、異なるパラメータまたは異なるパラメータタイプのメソッドが 2 つある場合によく使用されます。 JavaScript は正式にはクラス メソッドのオーバーロードをサポートしていません。引数属性を通じてクラス メソッドをオーバーロードできます。
function classA(){
//パラメータの数を取得します
// this.arguments.length は間違っています
var num=classA.arguments.length;

this.method1=function(){
if(num==0){
alert (0);
if(num==1){
alert(1);
}
}
}
クラスまたは関数名の argument 属性は、すべてのパラメータを含む配列を返します。
例: classA.arguments.length はパラメータの数を取得でき、classA.arguments[0] は最初のパラメータの値を取得します
必要に応じて、パラメータの数またはパラメータ値を取得することで、次のようになります同じ関数またはクラスには次のような異なる関数があります:
var obj= new classA();
obj.method1();//出力 0
var obj1= new classA(5 ; >function A) (){
this.a=1;
this.b=2;
this.a this.b; }
//オブジェクトを定義します
var obj=new A();
//クラス属性を割り当てます
obj.b=6; /Call クラスメソッド
var sum=obj.add();

別の定義メソッド:
var obj={
a:1,
b: 2.
add:function(){
return this.a this.b;
}
}

このメソッドで定義されたオブジェクトには、次のクラスに適したクラス構造も定義されています。一度だけ使用
属性とメソッドを定義する場合、 this キーワードを使用する必要はありません。「:」の直後に値を割り当てるだけです
ただし、メソッドで属性を使用する場合は、 this キーワードを使用する必要があります

この記事はあくまで私の個人的な経験と理解であり、いくつかの本に書かれていることとは少し異なると思いますが、読んでいただければすぐに理解できると思います。この記事は出発点としてのみ機能し、特定のプロジェクトのニーズについては詳細に対処する必要があります。関連するすべての例は私自身でデバッグおよび修正されています。間違いがある場合は修正してください。

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