JavaScript プロトタイプ学習の概要_JavaScript スキル

WBOY
リリース: 2016-05-16 18:17:32
オリジナル
901 人が閲覧しました

各オブジェクトには、その親オブジェクト (オブジェクトを構築する関数) のプロトタイプ (ここでは親プロトタイプまたは暗黙的プロトタイプと呼びます) を指す暗黙的なプロパティがあり、そこからそのプロパティとメソッドを継承します [親プロトタイプ参照に加えて] 、関数オブジェクトには明示的なプロトタイプ参照もあります] 通常の状況では、オブジェクトの親プロトタイプにはアクセスできませんが、関数オブジェクトの明示的なプロトタイプには FunctionName.prototype を通じてアクセスできます [FireFox ではオブジェクトの親にアクセスできます。オブジェクトの __proto__ 属性によるプロトタイプ]

このプロトタイプ属性自体は Object 型オブジェクトであるため、任意のプロパティを追加でき、メソッドはインスタンス オブジェクトがそれらを継承できるようにします

例: String 型オブジェクトは String.prototype です。 String 型オブジェクトにカスタム メソッドを追加したい場合は、次のように実装できます (クラスライクな VBscript に Trim メソッドを追加する例を示します)

コードをコピー コードは次のとおりです:

String.prototype.trim=function(){
return this.replace(/^s*|s*$/g,"")
}
// " jiangsk540 ".trim();// return "jiagnsk540"

上記の機能を提供することに加えて、プロトタイプは、同様のインスタンス オブジェクトのグループが属性とメソッドを共有するためのメカニズムも提供します (これは、インスタンス オブジェクトがインスタンスを使用して作成された数に関係なく、静的プロパティまたは静的関数と同等です)コンストラクターでは、プロトタイプで定義されたプロパティとメソッドは最初から最後まで一度だけ定義されます。すべてのインスタンス オブジェクトはこのプロパティまたはメソッドの使用を共有しますが、C や JAVA の静的プロパティや静的関数と同じ概念ではありません。 ]
コードをコピー コードは次のとおりです:

function Class1(name){
this.name = 名前;
Class1.prototype.show=function(){
alert("name=" this.name);
var m1 = 新しい Class1 ("jiangsk540");
var m2 = new Class1("haired lion");
alert(m1.show===m2.show);// true を表示


コンストラクター プロトタイプに動的に追加された属性またはメソッドは、以前に作成したオブジェクト
(


function Class1(name){
this.name = name;
}
Class1.prototype.show=function( ){
alert("name=" this.name);
}
var m1 = new Class1("jiangsk540");
Class1.prototype.say=function(){
);
}
m1.say()//呼び出しが成功しました
/*
注: コンストラクターのプロトタイプに追加されたプロパティまたはメソッドのみが、作成されたオブジェクトで使用できます。すぐに呼び出すのと同様です
コンストラクター プロトタイプの参照を変更すると、作成されたオブジェクトからすぐに呼び出すことができなくなります
*/
Class1.prototype={newP:"jiangsk540"};
alert( m1.newP) //未定義

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート