javascriptの中のprototype
2282 ワード
javascriptでは、プロトタイプは関数の固有属性であり、他のオブジェクト、例えば文字列などの属性はありません.
この属性は何に使いますか?
1、この関数のすべてのインスタンスを共有する
例えば、共通の属性、共通の方法.C〓〓の中の静的な大域の変数に類似します.すべての例は、newの方法によって、この関数を構成する例示的なオブジェクトを指す.たとえば
この時またはnewの前にPersonのプロトタイプに属性を追加する方法は、両方のインスタンスz 3、l 4にアクセスできます.
プロトタイプの属性は、オブジェクトに属性と方法を追加する能力があります.
2、public方法
この特性のために、Javascriptの「クラス」(実は関数です)に対して、prototypeに追加する方法はpublic方法で、内部の方法はprvateです.
[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
この属性は何に使いますか?
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