JSでは、コンストラクタ関数を使用して新しいオブジェクトを作成し、プロトタイプオブジェクトにアクセスすると、プロトタイプのプロパティを見ることができます。 (より明確になるコードで):ノード: "Class"構文を使用したプロトタイプに期待オブジェクトが表示されない
function F() {
this.attr = 42;
}
F.prototype.foo = function() {
return 'life';
}
$> let f = new F();
undefined
$> f
F { attr: 42 }
$> Object.getPrototypeOf(f)
F { foo: [Function] }
ここにすべては問題ありません。
今、私はC {}
を結果することは私に混乱しているのと同じシナリオ
class C {
constructor() {
this.attr = 42;
}
foo() {
return 'life';
}
}
$> let c = new C()
undefined
$> c
C { attr: 42 }
$> Object.getPrototypeOf(o)
C {}
を作成するためにクラス構文を使用するつもりです。 私のfoo
の属性はどこですか?これはc
オブジェクトにはありませんが、私のC
プロトタイプではないようです!
Chrome Dev Toolsでコードを実行したところ、オブジェクトを展開した後に 'foo'が表示されます。 'Object.getPrototypeOf(o).foo'を実行することによって、そのオブジェクトに' foo'が存在することを証明することもできます。あなたの環境はただちにそれを表示していません。 –
@MikeC My envはノードコンソールです – Manu
したがって、クラス固有のプロトタイプを表示するとき、Nodeはプロトタイプのすべての要素を表示しません。プロパティはまだ存在します。 –