<strong>プロトタイプ属性の役割: <br></strong>プロトタイプ属性を使用して、オブジェクトのクラスの基本機能のセットを提供します。オブジェクトの新しいインスタンスは、オブジェクトのプロトタイプに割り当てられた操作を「継承」します。 <br><br><strong>プロトタイプ属性の機能: </strong> <br>すべての JavaScript 内部オブジェクトには、読み取り専用のプロトタイプ属性があります。内部オブジェクトのプロトタイプに機能を追加できますが、オブジェクトに別のプロトタイプを与えることはできません。 <br>ただし、ユーザー定義オブジェクトを新しいプロトタイプに割り当てることはできます。 <br><br><strong>コンストラクター属性の役割: <br></strong>コンストラクターは、オブジェクトを作成する関数を表します。 <br><br><strong>コンストラクター プロパティの機能: </strong> <br>コンストラクター プロパティは、プロトタイプを持つすべてのオブジェクトのメンバーです。これらには、Global オブジェクトと Math オブジェクトを除くすべての JavaScript 内部オブジェクトが含まれます。 <br>constructor 属性は、特定のオブジェクト インスタンスを構築する関数への参照を保持します。 <br><br>A プロトタイプを使用してオブジェクトの属性を追加する [方法 1] <br>例: <br><div class="codetitle"> <span><a style="CURSOR: pointer" data="43536" class="copybut" id="copybut43536" onclick="doCopy('code43536')"><u>コードをコピー</u></a></span>コードは次のとおりです:</div> <div class="codebody" id="code43536"> <br><script type="text/javascript"> <br>//メソッド 1<br>var myObj = function(){ <br>this.study = "JavaScript"; <br>} <br>myObj.prototype.hobby = function() <br>{ <br>this.hobby = "女の子を見る" <br>} <br>var newObj = new myObj() ; <br> for ( var attr in newObj ) <br>{ <br>document.write( attr "<br/>" ) <BR></script> > <br> <br>B プロトタイプを使用してオブジェクトの属性を追加する [方法 2] </div>例: <br><br><br><br><div class="codetitle">コードをコピー<span><a style="CURSOR: pointer" data="35250" class="copybut" id="copybut35250" onclick="doCopy('code35250')"><u>コードは次のとおりです。</u></a> </span><script type="text/javascript"> </div>//メソッド 2<div class="codebody" id="code35250">var superObj = { name:"xugang" }; >var subObj = { age:20 }; <br>function extend(superObj,subObj){ <br>//親オブジェクトのプロトタイプ オブジェクトを取得します<br>subObj.getSuper = superObj.prototype;親オブジェクトのプロパティを子オブジェクトに与えます<br>for(var i in superObj){ <br>subObj[i] = superObj[i] <br>} <br>} <br>extend(superObj, subObj); <br>for ( var s in subObj ) <br>{ <br>document.write( s "<br/>" ); // サブオブジェクト <BR> のプロパティを走査します。 🎜></script> <br><br> <br> <br>C はプロトタイプを使用して親クラスのプロトタイプ属性を継承します<br>例: <br><br> </div> <br><br>コードをコピーします<br><br><div class="codetitle"> コードは次のとおりです:<span><a style="CURSOR: pointer" data="13223" class="copybut" id="copybut13223" onclick="doCopy('code13223')"> <u><script> </u>function Person(_name){ </a>this.name = _name; </span>} </div>// オブジェクトを作成します (プロトタイプのプロトタイプ オブジェクトを変更するために使用されます) <div class="codebody" id="code13223">function addSex(_sex){ <br>this.sex = _sex; <br>} <br>// プロトタイプ オブジェクトを変更します<br>person.prototype = new addSex('male'); <br>var p = new Person( 'xugang'); <br>alert("p のプロトタイプは次のとおりです。" <br> //すべての属性を出力します<br>for(var i in p){ <br>//alert(p[ i]) <br>} <br><br>// ========= ======== 継承================ = <br>//サブオブジェクト Student <br>関数 Student(_study){ <br>this を作成します.study = _study; <br>} <br>// Student にプロトタイプを介して Person を継承させます <br>Student.prototype = new Person('Andy Lau') <br>var stu1 = new Student('JS'); <br>alert("stu1 のプロトタイプは次のとおりです: " stu1.constructor); <br>for(var i in stu1){ <br>alert(stu1[i]); <br>} <br></ script> <br><br> <br>Student オブジェクトのプロトタイプが person オブジェクトに変更され、 Person オブジェクトのプロトタイプが addSex に変更されるため、Student オブジェクトのプロトタイプは addSex になります。 <br>注意: オブジェクトのプロトタイプは、オブジェクトの新規作成時に決定されます。新規オブジェクトの作成後に変更すると、無効になります。 <br><br>D プロトタイプ オブジェクトとオブジェクトのコンストラクターを設定する方法<br>例: </div> <br><br><br><br>コードをコピー<br><br><div class="codetitle">コードは次のとおりです: <span><a style="CURSOR: pointer" data="52744" class="copybut" id="copybut52744" onclick="doCopy('code52744')"> <u><script type="text/javascript"> </u>function B(){ </a>this.name = "Andy Lau" </span>return "メソッド B"; </div>} <div class="codebody" id="code52744">function C(){ <br>this.age = 42; <br>return "C メソッド"; <br>B.prototype = new C() ; <br>var b = new B(); <br>b.constructor = B; // b のコンストラクターを B 自体に書き換えます<br>document.write("Constructor of b:"); .write(b .constructor() "<br/>"); <BR>document.write("b のプロトタイプ オブジェクトのコンストラクター メソッド: "); <BR>document.write(b.constructor.prototype. constructor() " <br/>"); <BR>for ( var m in b ) <BR>{ <BR>document.write("属性: " m ); : " b[ m] "<br/>"); <br>} <br></script> <br><br><br>結果は次のとおりです。 <br>b の構築メソッド: B メソッド <br>b のプロトタイプ オブジェクトの構築メソッド: C メソッド <br> 属性: age 値: 42 <br> 属性: name 値: Andy Lau <br> <br>E オブジェクトにプロトタイプを保存するために使用される __proto__ 変数<br>例: <br><div class="codetitle"> <span><a style="CURSOR: pointer" data="34181" class="copybut" id="copybut34181" onclick="doCopy('code34181')"><u>コードをコピーします</u></a></span> コード</div> <div class="codebody" id="code34181"> <br><script type="text/javascript"> <br>function myObject(){} <br>var my = new myObject(); __proto__ 変数はプロトタイプを保存するために使用されます。 <br>document.write(my.__proto__ "<br/>") <BR>//Internet Explorer では未定義と表示されます <BR> //Mozilla Firefox では次のように表示されます: [object Object] <BR><br>function Person(){ <br>this.name = "Andy Lau"; <BR>return "Person メソッド"; >/* <BR> メソッドを定義すると、メモリ内では以下と同等になります: <BR>person.prototype = {constructor:Person } <BR>*/ <BR>// Person オブジェクトのプロトタイプ オブジェクトを変更します <BR>function Super_person(){ <BR>this .hobby = "歌う"; <BR>return "Super_person メソッド"; <BR>person.prototype = new Super_person(); <BR>var newObj (); <BR>/* 新しいオブジェクト作成プロセスを使用します: <BR>var o = {}; <BR>o = {__proto__:person.prototype,name = "アンディ・ラウ"}; <BR>return o; <BR>*/ <BR>document.write(newObj.constructor.prototype.constructor() "<br/>"); newObj プロトタイプ オブジェクト (IE では無効です!) ) <br>document.write(newObj.__proto__.constructor() "<br/>"); <br></script> <br><br> <br>Firefox での結果は次のとおりです。 <br>[object オブジェクト] <br>Super_person メソッド<br>Super_person メソッド</div> </div>