質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

890閲覧

JavaScriptのオブジェクト指向

meron-pan

総合スコア44

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2017/12/24 04:41

編集2017/12/24 04:42

###前提・実現したいこと
ブラウザでデバックするために二つの関数を暫定的に互いが互いの関数を実行するコードを作成し、実行してみたところ、最初の2,3回まではうまくいったのですが、だんだんと処理が重くなり、反応しなくなりました。
開発者ツールを用いて、各関数の処理を調べてみたところ、pict.onload関数のみがネズミ子算的に増えていることがわかりました。
そこで疑問なのですが、関数の中でインスタンス化したaaaは再び大元の関数(scene1)が呼び出されたとき、新たにインスタンスが作られるものなのでしょうか?

###該当のソースコード

Javascript

1 2function Character(){ 3 var pict = new Image(); 4 pict.src = ""; 5 this.draw = function(x,y){ 6 pict.onload = function (e) { 7 ctx.drawImage(pict, x, y); 8 } 9} 10//以下の二つを互いを呼び出すようにする。 11function scene1(){ 12 //関数の中でインスタンス化 13 aaa= new Character(); 14 pict.src = "abc.png"; 15 aaa.draw(100,100); 16} 17 18function scene2(){ 19 ・・・ 20 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2017/12/24 05:30

コードが断片的すぎて問題箇所の特定が不可能です. なるべくコードを省略せず全体を掲載して下さい.
guest

回答1

0

ベストアンサー

new Character()のインスタンスは、scene()を呼び出した回数だけ生成されます。
new Character()の動作は、以下の_Character()を呼び出したときと同じになります。

javascript

1function _Character() { 2 var this = {}; // ここと 3 var pict = new Image(); 4 ... 5 } 6 return this; // ここが、newで追加された行 7}

.draw()もインスタンスの数だけ存在することになりますね。

投稿2017/12/24 05:25

penguinshunya

総合スコア140

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meron-pan

2017/12/24 05:37

ありがとうございます。ちなみにこの時、aaaが複数回作成されていることになるはずですが、同じ名前でインスタンス化など可能なものなのでしょうか?
penguinshunya

2017/12/24 05:42

はい。同じ名前でのインスタンス化は可能です。といいますか、Characterのインスタンスは複数ありますが、aaa変数の指すインスタンスはその中のただ一つです。それ以外のインスタンスには名前はありません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問