JavaScript - プロトタイプチェーンに関する質問
PHP中文网
PHP中文网 2017-06-14 10:53:03
0
3
716
リーリー

1.my.toString() が呼び出されるとき、JavaScript エンジンの実行パスは何ですか?

PHP中文网
PHP中文网

认证0级讲师

全員に返信(3)
滿天的星座

リーリー

[1]。Triangle インスタンス オブジェクトを作成します。 リーリー

[2] Triangle インスタンス オブジェクト my でメソッド getArea を呼び出します。

[3] Triangle インスタンス オブジェクト my でメソッド toString を呼び出し、現在のオブジェクトに存在しないことを確認します。TwoDShape インスタンス オブジェクトへのプロトタイプ チェーンをたどります。まだ存在しない場合は、Shape インスタンスに移動してオブジェクトを探します。
現時点での this オブジェクトは Triangle インスタンス オブジェクト my で、その name 属性値は Triangle で、出力は

いいねを押す +0
过去多啦不再A梦

1: まず、型とインスタンスの関係を理解し​​てください。Shape は型 (抽象)、varshape = new Shap()、shape はインスタンスです。
2: 質問が曖昧すぎます。と var sh = Shape() のコンストラクターの関係は何ですか => Shape のコンストラクターは Shape.prototype.constructor; (shape と sh はどのように関係するのでしょうか~)
3: 直接継承しないのはなぜですか?このようにデザインされました;

いいねを押す +0
代言

すべて分解するとわかります。まず、new の動作ロジックを見てください。TwoDShape.prototype = new Shape(); 3 つのことを実行します。 リーリー

同じ理由

リーリー リーリー

実行時

my.toString()的时候从my自身成员开始找toString,没有就沿着__proto__往上找,最终在my.__proto__.__proto__(也就是TwoDShape.prototype)里找到了toString

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