私はJavaScriptを学んでおり、オブジェクトの中に2つのクラスを定義したいと思います。 2番目のクラスは1番目のクラスから派生しています。オブジェクトはいつ完全に定義されますか?
それは次のようになります。そして、
Uncaught ReferenceError: foo is not defined
、私は複数の部分にクラスを分割しようとしました::
let foo = {
bar: (function() {
let bar_msg = '';
class bar {
constructor(msg) {
bar_msg = msg;
}
}
return bar;
}()),
baz: (function() {
let baz_msg = '';
class baz extends foo.bar {
constructor(msg) {
super();
baz_msg = msg;
}
}
return baz;
}())
};
エラーメッセージを
let foo = {};
foo.bar = (function() {
let bar_msg = '';
class bar {
constructor(msg) {
bar_msg = msg;
}
}
return bar;
}());
foo.baz = (function() {
let baz_msg = '';
class baz extends foo.bar {
constructor(msg) {
super();
baz_msg = msg;
}
msg() {
return baz_msg;
}
}
return baz;
}());
let b = new foo.baz('hi!');
console.log(b.msg());
これは機能します。
私の質問は次のとおりです。違いは何ですか?私はキーワードについて考えていないので、私はいくつかのGoogleの検索結果を表示することはできません。
私はそれが十分な情報ではないと思う。私はもう一度コードをテストしたので、 'let foo = {bar(){console.log(typeof foo); }}; '。私が 'foo.bar()'を呼び出すと、それはログに記録されます: 'object'。だから、あなたの答えは間違っていた – Vayne
'foo'宣言の内側で、または内側でfoo.barを呼び出しましたか? fooの中でbar関数を呼び出してみてください。 'foo'でクラス' baz'を拡張しようとすると、未定義となります。まだ宣言されていないので、まだ利用できません。 –
私はより明確に答えを更新しました。 –