javascript - js プロトタイプと _proto_ についてのちょっとした疑問
伊谢尔伦
伊谢尔伦 2017-05-19 10:26:34
0
9
802


関数は、プロトタイプ オブジェクトを指す prorotype 属性を作成します。そのため、prototype は関数固有の属性であり、Chrome 内のすべてのオブジェクトには _proro_ 属性があるように見えます。 _プロト_とは何ですか?プロトタイプオブジェクトへのポインタ?プロトタイプオブジェクトの _proto_ はどうなるでしょうか?私の疑問を解決するのを手伝ってください。ありがとう

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全員に返信(9)
Peter_Zhu

_proto_ はインスタンスオブジェクトの属性です。本に書かれている内容に従って説明しましょう。 リーリー

子インスタンスには _proto_ ポインターがあり、このポインターはコンストラクターではなく、そのプロトタイプ オブジェクトを指します。そのため、すべてのインスタンスはプロトタイプ チェーンを通じてプロトタイプのメソッド属性を見つけて共有できます。 。このプロトタイプ チェーンの最上位はオブジェクトです。インスタンスのプロパティと f メソッドを検索する場合、検索順序は次のとおりです: インスタンス ==> コンストラクター ==> プロトタイプ オブジェクト ==> オブジェクト。

末尾がオブジェクトであるかどうかについては、ES5 で新しく追加された Object.create() メソッドによって変更される場合があります。ほとんどの場合、末尾はオブジェクトであるため、インスタンスでは、toString(on Object.)、valueOf()、hasOwnProperty() などのメソッドを使用できます。

あまり良い説明ではありませんが、お役に立てれば幸いです。この部分は本の内容を読み、本のコードを組み合わせて練習することで理解できます。「高さ 3 編」の第 6 章の内容をすべて参照することをお勧めします。

いいねを押す +0
给我你的怀抱

「JavaScriptによる高度なプログラミング」の第6章を参照してください

いいねを押す +0
刘奇

__proto__ はオブジェクトの属性であり、これを通じてプロトタイプ オブジェクトの属性にアクセスできます。 new 演算子を使用してオブジェクト (

など) をインスタンス化するときのプロセスは次のようになります。 リーリー
いいねを押す +0
给我你的怀抱

__proto__ はオブジェクトの属性であり、
prototype は関数の属性であり、
関数もオブジェクトであり、それらには __proto__ もあります

いいねを押す +0
曾经蜡笔没有小新

上記の点は答えられていない気がしますが、__proto__は線であり、この線の行き先はPrototypeオブジェクト(プロトタイプオブジェクト)であり、__proto__はオブジェクトとそのプロトタイプを接続するために使用されます

いいねを押す +0
仅有的幸福

まず、質問の説明の誤りを修正してください。プロトタイプは関数の一意の属性ではありません。
この問題を本当に理解したい場合は、js の 原型链 関連知識を勉強してください。
上記の友人が言ったように、「JavaScript 高度なプログラミング」の第 6 章を参照してください。基本を理解した後、この図を見るとより明確になります。

いいねを押す +0
给我你的怀抱

おそらくこのように考えることができます。理解しやすいですが、十分に深くはないかもしれませんが、これがそれを理解するための最良の方法です。必要のない関数のメソッドとプロパティを考えることができます。 Prototype オブジェクトに保存されたデータとして公開されるその機能は、まさにサイヤマンのように非常に強力で潜在的な力を持っています。特定の方法で彼を強制的に排除するだけです。そうすれば、__proto__ は彼を利用できることがわかります。ハハハハ

いいねを押す +0
巴扎黑

@ Linshuizhaohua
図に示されているように、これは、Object と Function が両方ともトップレベル オブジェクトであることを意味しますか?

いいねを押す +0
滿天的星座

回答ありがとうございます。 昇格 3 を確認すると、関数はプロトタイプ オブジェクトを指すプロトタイプ属性を作成します。プロトタイプは実際に関数の一意の属性です。プロトタイプ オブジェクト [[prototype] へのポインターが存在します。 ]] インスタンス内のすべてのオブジェクトは、[[prototype]] のブラウザー実装である _proto_ 属性をサポートします。

各コンストラクターにはプロトタイプ オブジェクトがあり、プロトタイプ オブジェクトにはコンストラクターへのポインターが含まれており、インスタンス オブジェクトにはプロトタイプ オブジェクトへの内部ポインターが含まれています。継承は主にプロトタイプ チェーンに依存して、プロトタイプ オブジェクトを別の型のインスタンスと等しくします。プロトタイプ オブジェクトには別のプロトタイプへのポインターが含まれ、もう一方のプロトタイプにはレイヤーごとのデフォルト プロトタイプへのポインターが含まれます。関数はオブジェクトです。インスタンスは obj.prototype を指します。そしてついに、すべての値が Object.prototype.toString.call(value) を使用して型を決定できる理由がわかりました。

コンストラクター <-------- プロトタイプ オブジェクト < インスタンス ポインター

「もっと本を読んで、もっと新聞を読んで、おやつを減らして、もっと寝るのが理にかなっているようです」

「ガールフレンドはいますか?」
「新しいガールフレンド」
「...」

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート