JavaScriptのオブジェクトオブジェクトは、JSのすべてのオブジェクトのベースクラスです。つまり、JSのすべてのオブジェクトはオブジェクトオブジェクトから派生しています。オブジェクトオブジェクトは、主に任意のデータをオブジェクト形式にカプセル化するために使用されます。
1。オブジェクトクラスの紹介
オブジェクトクラスは、すべてのJavaScriptクラスの基本クラス(親クラス)であり、プログラマーにコンストラクターを定義することなくカスタムオブジェクトを作成する簡単な方法を提供します。
2。オブジェクトクラスの主なプロパティ
1.構成器:オブジェクトコンストラクター。
2.プロトタイプ:クラスのプロトタイプオブジェクト、静的プロパティを取得します。
3。オブジェクトクラスの主な方法
1.HasownProperty(PropertyName)
オブジェクトに特定の属性があるかどうかを決定します。このプロパティは、たとえばobj.hasownProperty( "name")などの文字列で指定する必要があります。これは、ブール値を返します。この方法では、オブジェクトのプロトタイプチェーンにこのプロパティがあるかどうかを確認できません。それはオブジェクト自体のメンバーでなければなりません。
var str = ""; alert( "str.hasownproperty(/" split/")is:"+str.hasownproperty( "split")); // return falsealert( "string.prototype.hasownproperty(/" split/")is:"+string.prototype.hasownproperty( "split")); // trueを返します
実行結果:
HasownPropertyの使用はここだけではありません。 jQueryでは、プラグインを書く際の不可欠なステップは、パラメーターを初期化することです。非常に重要な方法の1つは$ .extend()です。その原則は、hasownProperty()メソッドを適用することです。同じ名前のオブジェクトメンバーがいる場合、Objectメンバーを通過するためにLoopに使用します。ある場合は、古いオブジェクトメンバーを新しいオブジェクトメンバーに置き換えます。このようにして、プログラムのプロセスを制御するために、メソッドのパラメーターの変更を変更できます。変更されていない部品については、デフォルト値を使用して制御できます。次のように、この拡張機能を単純にシミュレートすることもできます
関数拡張(ターゲット、ソース){//ターゲット古いソースの新しいソース(ソースのvar i){if(target.hasownproperty(i)){ターゲット[i] = source [i];}} var a = {"first":、 "second": "lyl"、 "3番目の": "bob" a){alert(a [i]); //元々はボブでしたが、今ではレオになりました}2.Isprototypeof(オブジェクト)
オブジェクトが別のオブジェクトのプロトタイプであるかどうかを判断します。
obj1.isprototypeof(obj2);
OBJ1はオブジェクトのインスタンスです。 OBJ2は、プロトタイプチェーンをチェックする別のオブジェクトです。プロトタイプチェーンを使用して、同じオブジェクトタイプの異なるインスタンス間で機能を共有できます。 OBJ2のプロトタイプチェーンにOBJ1が含まれている場合、ISPrototypeofメソッドはtrueを返します。 OBJ2がオブジェクトではない場合、またはOBJ1がOBJ2のプロトタイプチェーンに表示されない場合、ISPrototypeofメソッドはFALSEを返します。
<script type = "text/javascript"> function foo(){this.name = 'foo';} function bar(){} bar.prototype = new foo(); var goo = new bar(); alert(goo.name); //fooalert(bar.prototype.isprototypeof(goo));//true、Barのプロトタイプチェーンに現在のオブジェクトGooがある場合、IsPrototypeofメソッドはtrue </script>を返します</script>3.PropertyisEnumerable(propertyName)
この方法により、このオブジェクトのメンバーが通過可能かどうかを検出できます。通過可能である場合、このオブジェクトがfor in loopを使用して通過できることを証明します。
フォーマットは次のとおりです。OBJ.PropertyisEnumerable(propertyName)
PropertyNameがOBJに存在し、for…in loopを使用して徹底的に列挙できる場合、propertyisenumerableプロパティは真実です。オブジェクトに指定されたプロパティがない場合、または指定されたプロパティが列挙できない場合、PropertyIsEnumerableプロパティはFalseを返します。通常、事前定義されたプロパティは列挙できませんが、ユーザー定義のプロパティは常に列挙できます。
4.ToString():オブジェクトに対応する文字列を返します
5.ValueOf():オブジェクトに対応する元のタイプを返します
上記の5つの方法は、object.prototypeで定義されています。 ECMAScriptのすべてのオブジェクトはオブジェクトから継承されているため、ECMAScriptのすべてのオブジェクトにはいくつかの方法があります。
テストコード1:
var p = new object(); //オブジェクトを介してオブジェクトを直接作成しますent.write( "<pre>"); document.writeln( "p.constructor:"+p.constructor); // objectのコンストラクターdocument.writeln( "object.prototype:"+object.prototype); //プロトタイプオブジェクトを取得する、プロトタイプは静的プロパティであり、 "クラスの名前のようにアクセスすることができます。 document.writeln( "p.isprototypeof(p):"+p.isprototypeof(p)); document.writeln( "p.hasownproperty(/" age/"):"+p.hasownproperty( "age")); document.writeln( "p.p.property isenumulable(/" age/"): "+p.p.propertyisenumerable(" age ")); document.writeln(" p.tostring(): "+p.tostring()); document.writeln(" p.valueof(): "+p.valueof()); document.write(" </pre> "); document.write(" </pre> ");
実行結果:
テストコード2:
var car = function(){}; car.prototype.hello = function(){alert( "hello car");}; var car = new car(); car.f = function(){alert( "custom method");} document.write( "<pre>"); document.writeln( "car.hasownproperty(" f/") "+car.hasownproperty(" f ")); // ture、carオブジェクトにはfメソッドdocument.writeln(" car.propertyisenumerable(/"f/"))は: "+car.propertyiseNumerable(" f "); // ture、carオブジェクトがあります。 document.writeln( "car.hasownproperty(/" hello/")"+car.hasownproperty( "hello")); // false、車自体にHello Method document.writeln( "car.propertyisenumerable(/" hello/")結果は次のとおりです。 // false、この方法なし、もちろん、document.writeln(car.constructor.prototype.hasownproperty(/"hello/")の結果は次のとおりです。 // CARクラスカーのプロトタイプにはHello Method Document.writeln( "car.constructor.prototype.propertyisenumerable(/" hello/")があり、結果は次のとおりです。 document.writeln( "car.prototype.hasownproperty(/" hello/")と結果は次のとおりです。 "+car.prototype.propertyisenumerable(" hello ")); document.write(" </pre> ");実行結果:
上記は、JavaScript Knowledge Points(Eleven)の要約を含む、エディターが紹介したJSのオブジェクトクラスの詳細な説明です。それがあなたに役立つことを願っています。