コンストラクタインスタンスとプロトタイプの関係1. あらゆる関数にはプロトタイププロパティがあり、これはオブジェクトである 関数F(){} console.log(F.prototype) // => オブジェクト //プロトタイプオブジェクト F.prototype.sayHi = function () { console.log('こんにちは!') } 2. コンストラクターのプロトタイプ オブジェクトには、デフォルトでコンストラクター プロパティがあり、これはプロトタイプ オブジェクトが配置されている関数を指します。 console.log(F.constructor === F) // => true //これを示します 3. コンストラクタを通じて取得されたインスタンスオブジェクトには、コンストラクタのプロトタイプオブジェクトへのポインタ_proto_が含まれます。 var インスタンス = 新しい F() console.log(instance.__proto__ === F.prototype) // => true これは、現在のコンストラクタによって作成されたインスタンスオブジェクトには、 したがって、インスタンスを使用してプロトタイプオブジェクトのメンバーに直接アクセスできます。 例: instance.sayHi() // => hi! と印刷します。 知らせ
プロトタイププロパティ
つまり、すべてのオブジェクト インスタンスが共有する必要があるプロパティとメソッドをプロトタイプ オブジェクト上で直接定義できるということです。 例: 関数 Person (名前, 年齢) { this.name = 名前 this.age = 年齢 } console.log(Person.prototype) //プロトタイプを印刷します Person.prototype.type = 'human' //プロトタイプオブジェクトのプロパティにhumanをマウントします Person.prototype.sayName = function () { //関数を定義することもできます console.log(this.name) } p1 = new Person(...) とします。 p2 = new Person(...) とします。 console.log(p1.sayName === p2.sayName) // => true
これは、すべてのインスタンスの 属性またはメンバーの検索原則複数のインスタンス オブジェクトがプロトタイプ オブジェクト内のプロパティまたはメンバーを共有できることはわかっていますが、この共有メカニズムは JS ではどのように実装されるのでしょうか。 これは属性の検索原理について言及する必要がある コードがインスタンス オブジェクトのプロパティを読み取るたびに、指定された名前のプロパティまたはメンバーの検索が実行されます。 検索プロセスは次のとおりです。 1. オブジェクトインスタンス自体から検索を開始する 2. 指定された名前の属性がインスタンスオブジェクト内に見つかった場合、その属性の値が返されます。 3. 見つからない場合は、インスタンスオブジェクトに含まれるポインターが指すプロトタイプオブジェクトの検索を続行し(上記参照)、プロトタイプオブジェクト内で指定された名前の属性を探します。 4. このプロパティがプロトタイプオブジェクト内に見つかった場合、プロパティの値が返されます。 要約する以上が、プロトタイプによってマウントされたプロパティとメソッドを複数のインスタンス オブジェクトが共有する基本原理です。 この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: MySQL グラフィカル管理ツール Navicat のインストール手順
>>: CSS3を使用してボタンホバーフラッシュダイナミック特殊効果コードを実装する
目次背景仮想ファイルのインポート例書類タイプスクリプトのサポート要約する背景新しいプロジェクトで v...
目次基本的な説明AST 解析レンダリング機能通常コンポーネントと動的コンポーネントの比較ファクトリ関...
データが変更されても、DOM ビューはすぐには更新されません。変更直後にノードまたはその値を取得しよ...
サイト上のページを表示するためのリクエストがサーバーに送信されると(たとえば、ユーザーがブラウザでペ...
画像をプルする # docker pull codercom/code-server # Docke...
vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...
目次1. ダウンロード2. インストールと解凍3. Tomcatを起動する4番目に、インストールが成...
複数テーブルクエリ複数のテーブルから関連するクエリ結果を取得するには、単一の SELECT ステート...
MySQL では、ほとんどのインデックス (PRIMARY KEY、UNIQUE、INDEX、FUL...
この記事では、例を使用して、MySQL ビューの作成 (CREATE VIEW) と使用上の制限につ...
序文MySQL では、server-id を使用してデータベース インスタンスを一意に識別し、それを...
目次序文ストアドプロシージャ: 1. ストアドプロシージャの作成と呼び出し1. ストアドプロシージャ...
最近、プロジェクトでは kubernetes (以下、k8s と表記、k と s の間には 8 つの...
ウェブ上の一部の画像の src または CSS 背景画像 URL の後に、data:image/pn...
プログラマーは MySQL を扱う機会が多く、毎日触れているとも言えますが、MySQL テーブルには...