1。概要
Java言語では、これらのクラスに基づいて使用するクラスを定義し、オブジェクトを作成できます。 JavaScriptでは、ユーザークラス、ハッシュテーブルクラスなどの定義など、独自のクラスを定義することもできます。
現在、JavaScriptには、日付、配列、regexp、文字列、数学、番号などの標準クラスがあり、プログラミングに多くの便利さを提供します。しかし、複雑なクライアントプログラムの場合、これらは十分ではありません。
Javaとは異なり、Java2は基本的にプログラミングのニーズを満たす多くの標準クラスを提供します。ただし、JavaScriptは標準クラスをほとんど提供しておらず、多くのプログラミングの必要性を自分で実装する必要があります。たとえば、JavaScriptにはハッシュテーブルテーブルがありません。これは、重要な値の処理に不便です。
したがって、私は個人的に、完全なJavaScriptオブジェクトビューは次のようにする必要があると思います。
2。基本概念
1.オブジェクトをカスタマイズします。
JSのオブジェクト拡張メカニズムによると、ユーザーはJSオブジェクトをカスタマイズできます。これはJava言語に似ています。
カスタムオブジェクトに対応するのは、日付、配列、数学などのJS標準オブジェクトです。
2。プロトタイプ
JSでは、これはオブジェクトのプロパティとメソッドを作成する方法であり、プロトタイプを介してオブジェクトに新しいプロパティとメソッドを追加できます。
プロトタイプを使用すると、JS標準オブジェクトに新しいプロパティとメソッドを追加できます。たとえば、文字列オブジェクトの場合、新しいメソッドトリム()を追加できます。
Javaなどの厳格なプログラミング言語とは異なり、ランタイム中にJSオブジェクトに新しいプロパティを動的に追加できます。
3つ、文法規則
1。オブジェクト作成方法
1)オブジェクト初期化法
形式:objectName = {Propertion1:value1、property2:value2、…、propertyn:Valuen}
プロパティはオブジェクトのプロパティです
値はオブジェクトの値であり、値は文字列、数字、またはオブジェクトの1つになります
例:var user = {name: "user1"、age:18};
var user = {name: "user1"、job:{salary:3000、title:programmer}
この方法で初期化できる方法、たとえば:
var user = {name: "user1"、age:18、getname:function(){return this.name; }}以下は、属性と方法の定義を含むコンストラクターメソッドの焦点で説明し、コンストラクターメソッドを参照して説明します。
2)コンストラクターメソッド
コンストラクターを作成し、新しいメソッドを使用してオブジェクトを作成します。コンストラクターは、コンストラクターパラメーターを運ぶことができたかもしれません
例えば:
function user(name、age){this.name = name; this.age = age; this.canfly = false; } var use = new user();2。オブジェクトプロパティを定義します
1)JSでは、オブジェクトに対して3種類のプロパティを定義できます。プライベートプロパティ、インスタンスプロパティ、クラスプロパティです。 Javaと同様に、私有地はオブジェクト内でのみ使用できます。インスタンスプロパティはオブジェクトのインスタンスを介して参照する必要があり、クラスプロパティはクラス名を介して直接参照できます。
2)プライベート属性の定義
プライベート属性は、コンストラクター内でのみ定義および使用できます。
構文形式:var propertyname = value;
例えば:
function user(age){this.age = age; var ischild = age <12; this.islittlechild = ischild; } var user = new user(15); alert(user.islittlechild); //正しい方法alert(user.ischild); //エラー:オブジェクトはこのプロパティまたはメソッドをサポートしていません3)インスタンス属性を定義する2つの方法もあります。
プロトタイプメソッド、構文形式:functionname.prototype.propertyname = value
この方法、構文形式:this.propertyname = value、次の例で使用される場所に注意してください
上記の値は、文字作成、数字、オブジェクトです。
例えば:
function user(){} user.prototype.name = "user1"; user.prototype.age = 18; var user = new user(); Alert(user.age); - - - - - - - - - - 、、、、、、、、、、、、、、 - - 、、、、、、 - 、、、、、、、、、、、... - - - - - - - - - 、 - 、、、、、、、、、、、、 - - - 、、、、、、、、、、、、、、、...3)クラス属性定義
構文形式:functionname.propertyname = value
例えば:
function user(){} user.max_age = 200; user.min_age = 0; alert(user.max_age);JS標準オブジェクトのクラスプロパティを参照してください。
number.max_value //最大数値値math.pi // pi
4)上記のより正式な方法に加えて、属性を定義する非常に特別な方法もあります。構文形式:obj [index] = value
例:
function user(name){this.name = name; this.age = 18;この[1] = "ok";この[200] = "year"; } var user = new user( "user1"); Alert(user [1]);上記の例では、年齢属性はこの[1]を通じて取得されておらず、この[0]をこの[0]で取得することもできないことに注意することが重要です。つまり、インデックスによって定義されたインデックスは、インデックスモードを使用して参照する必要があり、インデックスモードで定義されておらず、通常の方法で参照する必要があります。
3。オブジェクトメソッドを定義します
1)JSのオブジェクトに対して定義できる3つのタイプのメソッドがあります。Javaと同様のプライベートメソッド、インスタンスメソッド、クラスメソッド:
プライベートメソッドは、オブジェクト内でのみ使用できます
インスタンスメソッドを使用する前にインスタンス化する必要があります
クラスメソッドは、クラス名を介して直接使用できます
注:メソッドの定義は、上記のインデックスメソッドを介して実行することはできません。
2)プライベート方法を定義します
プライベートメソッドはコンストラクターボディ内で定義する必要があり、コンストラクターボディ内でのみ使用できます。
構文形式:function methodname(arg1、…、argn){}
例えば:
function user(name){this.name = name;関数getNameLength(namestr){return namestr.length; } this.nameLength = getNameLength(this.name); }3)インスタンスメソッドを定義します。現在、2つの方法を使用できます。
コンストラクターの外部で使用されるプロトタイプメソッド、構文形式:
functionname.prototype.methodname = method;
または
functionname.prototype.methodname = function(arg1、…、argn){};
コンストラクター内で使用されるこの方法、構文形式:
this.methodname = method;
または
this.methodname = function(arg1、…、argn){};
上記の構文の説明では、メソッドはすでに外部に存在するメソッドです。 MethodNameで定義されるオブジェクトのメソッドは、外部メソッドがオブジェクトのメソッドに直接割り当てられることを意味します。
関数の形でオブジェクトメソッドを定義する(arg1、…、argn){}は、開発者が習得すべきものです。
インスタンスの定義方法のいくつかの例:例1
function user(name){this.name = name; this.getName = getUsername; this.setname = setUsername; } function getUsername(){return this.name; } function setUsername(name){this.name = name; }インスタンスの定義方法のいくつかの例:例2
function user(name){this.name = name; this.getName = function(){return this.name; }; this.setname = function(newname){this.name = newname; }; }インスタンスの定義方法のいくつかの例:例3
function user(name){this.name = name; } user.prototype.getName = getUsername; user.prototype.setname = setUsername();関数getUsername(){return this.name; } function setUsername(name){this.name = name; }インスタンスの定義方法のいくつかの例:例4
function user(name){this.name = name; } user.prototype.getname = function(){return this.name; }; user.prototype.setname = function(newname){this.name = newname; };4)クラスメソッドを定義します
クラスメソッドは、コンストラクターの外部で定義する必要があり、コンストラクター名で直接参照できます。
構文形式:
functionname.methodname = method;
または
functionname.methodname = function(arg1、…、argn){};
例:
function user(name){this.name = name; } user.getMaxage = getUserMaxage;関数getUsermaxage(){return 200; }または
user.getMaxage = function(){return 200;};
alert(user.getMaxage());
4。プロパティとメソッドの参照
1)可視性の観点から:
プライベートプロパティと方法は、オブジェクト内でのみ参照できます。
インスタンスプロパティとメソッドはどこでも使用できますが、オブジェクトで参照する必要があります。
クラスのプロパティとメソッドはどこでも使用できますが、オブジェクトのインスタンスでは参照することはできません(これは、静的メンバーにインスタンスでアクセスできるJavaとは異なります)。
2)オブジェクトレベルから:
Java Beansへの参照と同様に、深い参照を作成できます。
いくつかの方法:
シンプルプロパティ:obj.propertyname
オブジェクトプロパティ:obj.innerobj.propertyname
インデックスプロパティ:obj.propertyname [index]
上記のものと同様に、より深い参照について。
3)定義方法から:
インデックスメソッドを介して定義された属性は、インデックスメソッドを介して参照する必要があります。
非インデックスメソッドによって定義される属性は、通常の方法で参照する必要があります。
また、注:オブジェクトのメソッドは、インデックスメソッドを介して定義することはできません。
5。プロパティと方法の動的な追加と削除
1)インスタンス化されたオブジェクトの場合、そのプロパティとメソッドを動的に追加および削除できます。構文は次のとおりです(オブジェクトインスタンスがOBJであると仮定):
オブジェクトプロパティを動的に増やします
obj.newpropertyname = value;
オブジェクトメソッドを動的に増やします
obj.newmethodname = methodまたは= function(arg1、…、argn){}
オブジェクトプロパティを動的に削除します
obj.propertynameを削除します
オブジェクトメソッドを動的に削除します
obj.methodnameを削除します
2)例:
function user(name){this.name = name; this.age = 18; } var user = new user( "user1"); user.sister = "susan"; alert(user.sister); // delete users.sisterを実行します。 alert(user.sister); //レポートエラー:オブジェクトはこのプロパティユーザーをサポートしませんuser.getMotherName = function(){return "mary";} alert(user.getMotherName()); // delete user.getMotherName; alert(user.getMotherName()); //レポートエラー:オブジェクトはこのメソッドをサポートしていません4、要約
1.カスタムオブジェクトメカニズムは、JSにとって最も魅力的なメカニズムの1つです。これは、C ++とJavaプログラマーにとって単に素晴らしいことです!
2。オブジェクトを作成するには、オブジェクトの初期化とコンストラクターの2つの方法があります。
3。オブジェクトのプロパティと方法、可視性を備えた制約、異なる視認性のある属性とメソッドは、異なる方法で定義されています。
上記の記事は、JSオブジェクト、操作属性、およびメソッドに基づいています。これらはすべて、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。