私は3つのクラスを作成していますが、何かを表示したい場合、最後のクラスはinit関数を使用してプロパティに値を割り当てます。しかし、私は期待どおりに動作しません。javascriptのinit関数に問題があり、init関数で代入した後にプロパティを使用する
class Circle1 {
constructor(options) {
}
render() {
document.getElementById('result').innerHTML = 'Hello, ';
}
}
class Circle2 {
constructor(options) {
}
render() {
document.getElementById('result').innerHTML += 'My';
}
}
class Circle {
constuctor(options) {
this.x = options.x;
this.y = options.y;
this.length = options.length;
this.bodies = [];
this.init(options);
}
init(options) {
this.first = new Circle1(options);
for (let i = 0; i < this.length; i++) {
this.bodies.push(new Circle2(options));
}
}
render() {
/**
this.first.render();
this.bodies.forEach(function(body) {
body.render();
});
**/
document.getElementById('result').innerHTML += 'World';
}
}
var c = new Circle({
x: 20,
y: 20,
length: 6
});
c.render();
このコードでは、「ワールド」が画面に表示されます。
ただし、コメントコードのコメントを外し、画面に「Hello、My(times length)World」と表示しようとしましたが、何も表示されません。
私は非常にクラスのinit関数と混同しています。私はその関数内のプロパティに値を割り当てることができると思ったが、結果はうまくいかないことを示している。私のコードで何が間違っていますか?
ここにはjsfiddleリンクがあります。
をinit関数は全くありませんか?そのコードをコンストラクタに入れてください。 – Bergi
'.innerHTML ='と '.innerHTML + =' – Bergi
@Bergiの違いは、 'init'関数のハングアップだけです。私はそれがどのように機能するのか分かりません。私はいくつかのコードを読んで、それを使って自分でテストしたい。違いはなんですか?あなたは精巧にお考えですか? – newguy