1.my.toString() が呼び出されるとき、JavaScript エンジンの実行パスは何ですか?
認(rèn)證0級(jí)講師
リーリー
[1]。Triangle インスタンス オブジェクトを作成します。 リーリー
[2] Triangle インスタンス オブジェクト my でメソッド getArea を呼び出します。[3] Triangle インスタンス オブジェクト my でメソッド toString を呼び出し、現(xiàn)在のオブジェクトに存在しないことを確認(rèn)します。TwoDShape インスタンス オブジェクトへのプロトタイプ チェーンをたどります。まだ存在しない場(chǎng)合は、Shape インスタンスに移動(dòng)してオブジェクトを探します。
現(xiàn)時(shí)點(diǎn)での this オブジェクトは Triangle インスタンス オブジェクト my で、その name 屬性値は Triangle で、出力は
1: まず、型とインスタンスの関係を理解し??てください。Shape は型 (抽象)、varshape = new Shap()、shape はインスタンスです。
2: 質(zhì)問が曖昧すぎます。と var sh = Shape() のコンストラクターの関係は何ですか => Shape のコンストラクターは Shape.prototype.constructor; (shape と sh はどのように関係するのでしょうか~)
3: 直接継承しないのはなぜですか?このようにデザインされました;
すべて分解するとわかります。まず、new の動(dòng)作ロジックを見てください。TwoDShape.prototype = new Shape();
3 つのことを?qū)g行します。
リーリー
リーリー リーリー
実行時(shí)my.toString()
的時(shí)候從my
自身成員開始找toString
,沒有就沿著__proto__
往上找,最終在my.__proto__.__proto__
(也就是TwoDShape.prototype
)里找到了toString