jsのプロトタイプとは何ですか

(*-*)浩
リリース: 2019-06-15 17:58:34
オリジナル
4827 人が閲覧しました

Javascript もオブジェクト指向言語ですが、クラスベースの言語ではなく、プロトタイプベースの言語です。

jsのプロトタイプとは何ですか

「JavaScript でのオブジェクトの作成」の記事で述べたように、コンストラクターを使用してオブジェクトを作成する場合には問題があります。つまり、同じコンストラクターの異なるインスタンスの同じメソッドがそのため、プロトタイプを使用してコンストラクター内のパブリック プロパティとメソッドを抽出し、それらをカプセル化して、すべてのインスタンスで共有できるようにします。

関数で定義されたオブジェクトにはプロトタイプ属性があり、プロトタイプ属性はプロトタイプ オブジェクトを指します。プロトタイプ オブジェクトにはコンストラクター属性があり、このコンストラクター属性もコンストラクター オブジェクトを指しており、このコンストラクター オブジェクトはまさに関数そのものです。

疑似コードは次のように表現されます。

var function{
    prototype:prototype{
        constructor:constructor == function
    }
}
ログイン後にコピー

関数とプロトタイプの関係

#関数の作成js will 関数のプロトタイプ オブジェクトを指すプロトタイプ属性が自動的に作成され、プロトタイプ オブジェクトは関数を指すコンストラクター属性を自動的に取得します。

例: 例として、前のプロトタイプ モードを使用してオブジェクトを作成します。

<script type="text/javascript">
function Person(){

}
Person.prototype.name="lxy";
Person.prototype.age=22;
Person.prototype.job="Software Engineer";
Person.prototype.sayName=function(){
    alert(this.name);
}
     
     var lxy=new Person();
     lxy.sayName();
     var personA=new Person();
     personA.sayName();
     alert(lxy.sayName()==personA.sayName());//true
</script>
ログイン後にコピー

インスタンスとプロトタイプの関係

Createコンストラクターを介したインスタンス。インスタンスには、コンストラクターのプロトタイプ オブジェクトを指すプロパティ (ポインター) が内部に含まれます。

例: PERSON コンストラクター インスタンス PERSON1 と PERSON2 の [[Prototype]] 属性は両方とも PERSON のプロトタイプを指します。

注: [[Prototype]] 接続は、インスタンスとコンストラクターの間ではなく、インスタンスとコンストラクターのプロトタイプの間に存在します。

このポインタに関しては、ECMA-262 では [[プロトタイプ]] と呼ばれています。 [[プロトタイプ]] にアクセスする標準的な方法はありませんが、Firefox、Safari、および Chrome は各オブジェクトの属性 __protp__ をサポートしています。他の実装では、このプロパティはスクリプトには表示されません。

以上がjsのプロトタイプとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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