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