ここで、プロトタイプは、システムに付属する属性を表します。これは、後で属性を取得するときに使用される属性 Lastname を持つように Person の祖先が設定されていることを意味します。 person と person1 の属性値を継承します
小さな例は、継承関係を示しています
プロトタイプは、毎回作成するのではなく、一部のオブジェクトに共通のものを一度だけ書き込むことができます
さらに、プロトタイプをカプセル化することもでき、その方が優れています
前の例のコンストラクターは、システムに付属するプロパティ ( と呼ばれます) です。これはプロトタイプから継承されており、その内容はコンストラクターです。もう 1 つの属性は、システム独自の属性です。の _ はプロトタイプの内容です (2 つの __ は暗黙の命名規則です)
こちらこの例は
しかし、関数ステートメントの順序を変更すると、
実行順序が変更されたため、person.name はチェリーになります
プロトタイプチェーン
new は人に属するため、これは人に返されます。
person.__proto__は、person.prototypeにリンクされているため、変更されません(つまり、person.prototypeは直接変更する以外に変更できません)
person は、sayName
Object.create (プロトタイプ) に直接アクセスできません。
この場合プロトタイプには直接アクセスできますが、age の内部データにはアクセスできません
そして、
には次のようにアクセスできます:
ほとんどのオブジェクトは最終的に Object.prototype を継承します
しかし、次の例外があるため、すべてのオブジェクトがそれを継承するわけではありません。ケース:
obj __proto__ がありません
__proto__ を手動で追加する場合:
でも、これなら
obj.name が見つかりません。このデータにアクセスする唯一の方法は:
/************************************************* ************************************************* *********/
拡張子:
toString() メソッドは Object.prototype に組み込まれているため、ほとんどのオブジェクトがこのメソッドを持ちます (未定義と null を除く)
これら 2 つは、次のプロトタイプを継承できませんパッケージング クラスを介してオブジェクト化されるため、アクセスできません。
数値は次の方法でのみアクセスできます:
数値内の '.' は優先度が高いため、システムはそれを小数点 (浮動小数点型) と見なします。 、そのため、エラーが報告されます
詳細に分析してみましょう:
num.toString() にはパッケージ化クラスが表示されます:
実際、プロトタイプにはオーバーライドされた toString() メソッドがあります。
プロトタイプチェーンによれば、Number のプロトタイプの __proto__ はオブジェクトのプロトタイプを継承します:
したがって、num.toString() メソッドが呼び出されると、レベルごとに上がります。 Number
のこの関数のプロトタイプが再び実践されます:
ここでの呼び出しは次のようにする必要があります:
継承された toString メソッド必要に応じて、ここの object.prototype から 切り詰めるには:
このメソッドを書き換えるだけです
結果:
以下に、自動的に書き換えられたものをいくつか示します:
最後に、小さなバグについて話しましょう:
これは、js の精度が不正確であるためです
この記事では、プロトタイプとプロトタイプ チェーンの関連内容について説明します。 PHP 中国語 Web サイトに注意してください。
関連する推奨事項: JQuery での
django はリクエストを使用してブラウザーから送信されたパラメーターを取得します
以上がプロトタイプおよびプロトタイプチェーンの関連コンテンツの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。