ESは、そのプロトタイプはすべてのオブジェクトのプロパティだと言っていますか?はい、どちらも "コンストラクタ関数"と "オブジェクトインスタンス"はすべて関数/オブジェクトであり、それらはすべて "プロトタイプ"プロパティを持つ必要があります。 JavaScriptでオブジェクトのプロトタイプを使用できない理由は? "isPrototypeOf"?
しかし、私が試したとき:var Person=function(){
this.name='abc';
this.age=30;
};
var o1=new Person();
var o2=new Person();
console.log(o2.prototype.isPrototypeOf(o1));
コンソールプリント例外が言って:
console.log(o2.prototype.isPrototypeOf(o1));
^
TypeError: Cannot read property 'isPrototypeOf' of undefined
そのエラーは何ですか?私はそれが知っている
console.log(Person.prototype.isPrototypeOf(o1));
作品。しかし、なぜ "Person"はisPrototypeOfメソッドでプロトタイプを持ちますが、o2はそのようなプロパティ/メソッドを持っていませんでしたか?
は、その後、私はこれを試してみました:
console.log(o2.prototype.prototype.isPrototypeOf);
それも失敗した、これはさらに奇妙です
console.log(o2.prototype.prototype.isPrototypeOf);
^
TypeError: Cannot read property 'prototype' of undefined
を言って:O2のプロトタイプは "人" であるならば、私は
Person.prototype == o2.prototype.prototype
を期待します
しかし、なぜそれでも失敗するのですか?
_Instances_は、一般的に 'prototype'sを持っていません。コンストラクタ関数だけが持っています。 'Object.getPrototypeOf(o1)'を試すことができます。 'Array.prototype'と' [] .prototype'の違いは同じです。 – Xufox