「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > proto とconstructor.prototypeの違いは何ですか?

proto とconstructor.prototypeの違いは何ですか?

2024 年 11 月 19 日に公開
ブラウズ:130

What\'s the Difference Between proto and constructor.prototype?

proto とconstructor.prototype

の違い JavaScript オブジェクトを扱う場合、 の違いを理解する]proto とconstructor.prototypeは重要です。 proto はオブジェクトの直接のプロトタイプを指しますが、constructor.prototype は、オブジェクトを作成した関数の作成元となったオブジェクトを参照します。この区別により、プロトタイプ チェーンをトラバースするときに異なる結果が生じる可能性があります。

プロトタイプ チェーン トラバーサル

提供されたコードで示されているように、proto を使用できます。オブジェクトのプロトタイプ チェーンを横断します。この例では、proto は、Gadget 関数のインスタンスである newtoy のプロトタイプ チェーンを走査するために使用されます。後続の proto 呼び出しはチェーン内で 1 レベルずつ上がり、Object.prototype.

を超えるプロトタイプがないため、最終的に null を返します。ただし、constructor.prototype.constructor.prototype.constructor.prototype の場合は、を使用すると、プロトタイプ チェーンも上に進みますが、ガジェット コンストラクターの作成元のプロトタイプを参照するため、最終的に最初のガジェット関数が返されます。

Internet Explorer での Null チェック

Internet Explorer では、proto プロパティが使用できないため、Function オブジェクトのプロトタイプ ゲッターを使用してプロトタイプ チェーンをトラバースできます。以下のコードは、null をチェックする方法を示しています。

function checkNull(obj) {
  while (obj = obj.prototype) {
    // Check if the prototype is null
  }
}
リリースステートメント この記事は次の場所に転載されています: 1729476436 権利侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3