javascriptにおける原型継承の理解

3159 ワード

1.javascriptオブジェクトには、プロトタイプの属性があります.この属性はプロトタイプのオブジェクトを指しています.このプロトタイプのオブジェクトには、もう一つのconstruct属性があります.この属性はこのオブジェクト自体を指しています.プロセス言語で説明できます.        prototype:{                construct:object                          } } prototypeという対象は原型の対象となります.constructorがその対象自体を指すのであれば、構造関数でオブジェクトを作成する場合には、例えば:new cat();元のオブジェクトの構造関数でオブジェクトを作成するということです.つまりcat.prototype.com nstructor==catはもちろんこの原型オブジェクトを書き換えることもできます.書き換えた元のオブジェクトにconstrutor属性を追加しないとこの条件は成立しません.を選択して継承を実現します.
			//Animal    
			function Animal(name) {
				this.name = name;
			}

			//  Animal prototype  
			Animal.prototype = {
				sex : "famale",
				say : function() {
					alert("animal");
				}
			}
			function people(name) {
				this.name = name;
			}


			people.prototype = new Animal("animal");
			people.prototype.say = function() {
				alert("peopel")
			};
			//         ,    :people.say() people.sex;  people      
			var zhangsan = new people("zhangsan");
			alert(zhangsan.sex);//famale
			zhangsan.say();//people
			
			//    prototype,        object prototype object
			function cat() {

			}
			
			alert( function() {} instanceof Object);//true
			alert( typeof Animal.prototype);//object
			alert( typeof Animal.constructor);//function
			alert(Animal.prototype.constructor == Animal);//false
			alert(cat.prototype.constructor == cat);//true
上記の例では、people統合animalの属性プロセスを実証しましたが、次のalert文の結果から、有効であることを確認できます.
object={        prototype:{                constructor:this                            } }
説明の正確さは,これは大まかな内部構造の記述にすぎず,プロトタイプの継承を理解するために強力である.
一対三を挙げると、他の種類のオブジェクトを作り続け、原型のオブジェクトを使ってペプシを指し、相続チェーンを形成することができます.
例えば、peopleのsex属性、プログラムはまずpeople自身のsex属性を調べます.もしないなら、prototypeが指す対象のsexを探しに行きます.もしあるなら、ちょうど、ないなら、引き続きその対象のprototypeが指す対象を探して、チェーンに沿ってobjectまで探します.undefineにまだ帰っていません.
以下はJavascript:The Definitive GideのProttotypeに関する原文です.参考にしてください.
Every JavaScript object has a second JavaScript object(or null,but this is rare)assicated with it.
This second object is known as a prototype、and thefirst object inherst properties from the prototype.          All object s created by object literals have the same prototypeoject,and we can refer to this prototype ooject in JavaScrpt code.prototype.Objecs crted using the new keyword and a stststststststorortotototototototototototototototototoproproproproproproproproproproproproprotototototototototototototototototototototototototototototoproproproproproproproproproproproproproproproproproproproproproproproproproproproproproproproproproproproeated by new Object()inheits from Object.prototype just the object created by''does.Simillary,the object created by new Aray()uses Aray.prototype ast as its prototype,and the object created by Date          Object.prototype is one of the rare object s that hasのprototype:it does not inheit any properties.Other prototype object.art abject a prototype.All of the built-in constructtorshave a prototype that inhers from Object.prototype.For example、Dates.prototype inhers properties from Object.prototype、so a Date object created by Daw Date