1.my.toString() が呼び出されるとき、JavaScript エンジンの実行パスは何ですか?
滿天的星座2017-06-14 10:55:03
リーリー
[1]。Triangle インスタンス オブジェクトを作成します。 リーリー
[2] Triangle インスタンス オブジェクト my でメソッド getArea を呼び出します。[3] Triangle インスタンス オブジェクト my でメソッド toString を呼び出し、現在のオブジェクトに存在しないことを確認します。TwoDShape インスタンス オブジェクトへのプロトタイプ チェーンをたどります。まだ存在しない場合は、Shape インスタンスに移動してオブジェクトを探します。
現時点での this オブジェクトは Triangle インスタンス オブジェクト my で、その name 属性値は Triangle で、出力は
过去多啦不再A梦2017-06-14 10:55:03
1: まず、型とインスタンスの関係を理解してください。Shape は型 (抽象)、varshape = new Shap()、shape はインスタンスです。
2: 質問が曖昧すぎます。と var sh = Shape() のコンストラクターの関係は何ですか => Shape のコンストラクターは Shape.prototype.constructor; (shape と sh はどのように関係するのでしょうか~)
3: 直接継承しないのはなぜですか?このようにデザインされました;
代言2017-06-14 10:55:03
すべて分解するとわかります。まず、new の動作ロジックを見てください。TwoDShape.prototype = new Shape();
3 つのことを実行します。
リーリー
リーリー リーリー
実行時my.toString()
的时候从my
自身成员开始找toString
,没有就沿着__proto__
往上找,最终在my.__proto__.__proto__
(也就是TwoDShape.prototype
)里找到了toString