関数のプロトタイプで、関数自体へのポインタがconstructor
というフィールドに含まれていることを知りました。プロトタイプが上書きされても `obj instanceof ConstructorFunc`はなぜtrueを返すのですか?
function Person(){
}
alert(Person.prototype.constructor); // function Person(){}
私は、オブジェクトリテラルを持つ関数のプロトタイプを上書きする場合は、コンストラクタフィールドが自然に失われた:
function Person(){
}
Person.prototype = {
name:"Sahand",
age:24
}
alert(Person.prototype.constructor); // function Object(){[native code]}
しかし、プロトタイプは、このように上書きされたときならば、我々はまだ確認できますこれが可能であるどのように
var person = new Person()
alert(person instanceof Person); // true
:オブジェクトがPerson
コンストラクタによって作成されましたか?どのようにinstanceof
person
が見つかりましたPerson()
のconstructor
プロトタイプのフィールドがPerson
を含まない場合、
申し訳ありません、Jonasを修正しました。まだ学んでいる... – Sahand
心配しない;)誤植... –