ホームページ  >  記事  >  ウェブフロントエンド  >  jsプロトタイプチェーンとは

jsプロトタイプチェーンとは

little bottle
little bottleオリジナル
2019-05-31 10:45:0015793ブラウズ

プロトタイプ チェーンはメカニズムです。つまり、プロトタイプ オブジェクトを含む JavaScript の各オブジェクトには、それを作成した関数オブジェクトのプロトタイプ オブジェクトを指す [[proto]] 属性が組み込まれています。 、プロトタイプ属性。

jsプロトタイプチェーンとは

#機能: プロトタイプ チェーンの存在は、主にオブジェクトの継承を実現するためにあります。

プロトタイプ チェーンに関するいくつかの概念:

1. 関数オブジェクト

JavaScript における関数オブジェクト。

2. プロトタイプ オブジェクト

関数オブジェクトを定義する場合、プロトタイプ オブジェクトと呼ばれる、プロトタイプと呼ばれる事前定義された属性が含まれます。

//函数对象
function F(){};
console.log(F.prototype)

jsプロトタイプチェーンとは

3、__proto__

JavaScript がオブジェクトを作成するとき、[[proto]] 組み込み属性が存在します。 . プロトタイプは、それを作成した関数オブジェクトを指すために使用されます。プロトタイプ オブジェクトには [[proto]] 属性もあります。したがって、継続的なポインティングでは、プロトタイプチェーンが形成されます。

たとえば、オブジェクト F のプロトタイプ オブジェクトを変更すると、上記の関係が明確にわかります。

//函数对象
function F(){};
F.prototype = {
    hello : function(){}
};
var f = new F();
console.log(f.__proto__)

jsプロトタイプチェーンとは

4 , new

new を使用してコンストラクターを呼び出す場合、

var o = {};
o.__proto__ = F.prototype;
F.call(o);

を実行するのと同じです。したがって、new はプロトタイプ チェーンの実装において重要な役割を果たします。

5. コンストラクター

プロトタイプ オブジェクト プロトタイプには、関数オブジェクトを参照するために使用される事前定義されたコンストラクター属性があります。これは循環参照です。

function F(){};
F.prototype.constructor === F;

実際のアプリケーションでは以下のような書き方がよく使われます

function F(){};
F.prototype = {
    constructor : F,
    doSomething : function(){}
}

ここでコンストラクタを追加する理由は、プロトタイプオブジェクトが書き換えられてコンストラクタ属性がなくなってしまうためです。手動で入力してください。

6. プロトタイプチェーンのメモリ構造

function F(){
    this.name = 'zhang';
};
var f1 = new F();
var f2 = new F();

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。