javascriptの中のprototype

2282 ワード

javascriptでは、プロトタイプは関数の固有属性であり、他のオブジェクト、例えば文字列などの属性はありません.
この属性は何に使いますか?
1、この関数のすべてのインスタンスを共有する
例えば、共通の属性、共通の方法.C〓〓の中の静的な大域の変数に類似します.すべての例は、newの方法によって、この関数を構成する例示的なオブジェクトを指す.たとえば
var Person = function(name) {
  this.name = name;
};

var z3 = new Person("z3");

var l4 = new Person("l4");
z 3、l 4はいずれもPersonの例です.
この時またはnewの前にPersonのプロトタイプに属性を追加する方法は、両方のインスタンスz 3、l 4にアクセスできます.
var Person = function(name) {
	this.name = name;
};

var z3 = new Person("z3");

var l4 = new Person("l4");

Person.prototype.sayHi = function(hi) {
	console.log(this.name + ":" + hi);
}; 

z3.sayHi("Hello World!");
l4.sayHi("Hello World!");
ですから
プロトタイプの属性は、オブジェクトに属性と方法を追加する能力があります.
2、public方法
この特性のために、Javascriptの「クラス」(実は関数です)に対して、prototypeに追加する方法はpublic方法で、内部の方法はprvateです.
var Person = function(name) {
	this.name = name;

	Person.prototype.sayHi = function(hi) {//      
		console.log(this.name + ":" + hi);
	}; 
	this.sayHi2 = function(hi){//      
		console.log(this.name + ":" + hi);
	}
	var _sayHi = function(hi){//      
		console.log(hi);
	}
};

var z3 = new Person("z3");


z3.sayHi("Hello World!");//OK
z3.sayHi2("hehehehe");//OK
z3._sayHi("hahahaha");//  
3、継承する
[javascript]  view plin copy
var Father Son father ソニー          ファザー = (function() {       機能 father(name) このコンストラクタはとても重要で、下のメンバー関数を添加して、属性は全部それに頼っています.         this.name = name       }            father.prototype.sayHi = function(hi) {       return consolie.log(this.name) + 「 : " + hi「hi」       };            return father;      )()          Son = (function() {       機能 Son(name) {         this.name = name       }            Son.prototype = new Father()//継承のコツはここにあります.       Son.prototype.cry = function(){ consolone.log(「おおっ」)//サブ拡張       return Son;          )()          ソン = new Son(「leftfist」)     son.sayHi(「ハロー」 World!");     ソニー.   このプロトタイプの由来については、阮一峰のブログで詳しく紹介されていますが、なぜこのようなものがあったのかを理解できます.主に設計者がjavascriptを複雑に設計して、対象に向かって正式な言語にしたくないのに、対象の継承などの属性を考慮して提供しています.
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html