はい、私はこれが以前に尋ねられて答えられたのを見たことがあります。しかし、ここに私がまだ理解していないことがあります:
コンストラクター関数を作成し、関数のprototypeプロパティをオーバーライドしないと、自動constructorプロパティが関数のプロパティにぶら下がっていprototypeます。それはMyConstructor.prototype.constructor === MyConstructor=>本当です。偉大な。しかし、独自のオブジェクトでオーバーライドし、プロパティprototypeにパッチを適用しないとどうなりますか? 現在は に存在せず、参照先がプロトタイプ チェーンの上方にしか見つからない場合、それは=> true です。罰金。そう...constructorconstructorprototypeMyConstructor.prototype.constructor === Object
Javascript デバッガー (Chrome など) で、コンストラクターのプロトタイプを独自のオブジェクトでオーバーライドし、そのコンストラクターのインスタンスを新たに作成してから、コマンド ラインでそのインスタンス変数を入力すると、Chrome が喜んで型を教えてくれるのはなぜですか? ? どうやってわかるの???つまり、コードで同じことを見つけるにはどうすればよいですか?
簡単な再現:
> function Foo() {}
undefined
> Foo.prototype.constructor === Foo
true
> Foo.prototype = {}
Object
> Foo.prototype.constructor === Foo
false
> f = new Foo()
Foo
> f
Foo
それは純粋なデバッガーの魔法ですか?