teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

質問者のやろうとしているやり方を見逃していたため、言及

2019/04/29 17:12

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -44,6 +44,18 @@
44
44
  つまり一般的とか、考えとかではなく、
45
45
  そもそも、**DOMの取得なりのコントロールは、DOMを読み込んでからでないと動かない**んです。
46
46
 
47
+ また、主な処理を、クラスの中に~とおっしゃっておりますが、
48
+ もしかして、
49
+ クラスのメソッドの中でいちいち、
50
+ window.addEventListnerなどを実行しているということでしょうか?
51
+ だとしたら、かなりよろしくなく、メモリーリークを誘発させる書き方だと思います。
52
+ addEventListnerは、その名の通り、**イベントを追加するメソッド**です。
53
+ つまり、そんなクラスを作った日には、インスタンスを生成するないし、該当メソッドを実行する度に、イベントを追加されてしまいます。
54
+ 一、二個ならまだしも、一万個とか生成した時は、
55
+ 管理不能、メモリ解放不能な変数や関数を、大量にメモリ上に残すことになります。
56
+ addEventListnerは、同スクリプト内で大量に使うなら、必要ないものは削除できるようにしておくか、
57
+ そもそも、同じオブジェクトにはあまり何個も重ねて処理を追加しないように書く工夫が必要かと思います。
58
+
47
59
  ### 大量の要素の管理方法
48
60
 
49
61
  constructorに直接オブジェクト処理実行してる時点で、メモリの無駄遣いというかすでに分かりやすさや、柔軟性が失われているような気がしますね。

1

構文が間違っている個所があったため、修正

2019/04/29 17:12

投稿

miyabi_pudding
miyabi_pudding

スコア9559

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  また、**アロー関数やclass構文は、Internet Explorerでは動きません。**
4
4
  javascriptは、プロトベースのオブジェクト指向言語のため、
5
5
  javascriptのclass構文は、プロトベース構文の糖衣構文になります。
6
- とまぁ、ここまで話しましたが、class構文を使う事を前提とされているようなので、また、アロー関数を使われているようなので、IEは対象ブラウザとして考えないでいい状況と認識お答えしていきます。
6
+ とまぁ、class構文、アロー関数を使う事を前提とされているようなので、IEは対象ブラウザとして考えないでいい状況と認識も併せてお答えしていきます。
7
7
 
8
8
  ### JavaScriptの書き始め方
9
9
  これに関して。
@@ -20,7 +20,7 @@
20
20
  そして、考えとおっしゃっていますが、
21
21
  class構文を使用したとしても、
22
22
  **インスタンスを生成する際には、DOMが読み込まれている状態でないと、
23
- 当然エラーが起きます。**
23
+ 当然エラー**が起きます。
24
24
  クラスの記述は、ロード系イベントの外側でけっこうですが、
25
25
  インスタンスを生成するnew構文は、ロード系イベントの中で書かないと、DOMが取得できずエラーが出ます。
26
26
  (body要素終了タグ直前に書くなら、あるいはエラーにならないかもしれない)
@@ -42,7 +42,7 @@
42
42
  ```
43
43
 
44
44
  つまり一般的とか、考えとかではなく、
45
- そもそも、**DOMの取得なりのコントロールは、DOMを読み込んでからでないと動かないんです。**
45
+ そもそも、**DOMの取得なりのコントロールは、DOMを読み込んでからでないと動かない**んです。
46
46
 
47
47
  ### 大量の要素の管理方法
48
48
 
@@ -75,8 +75,7 @@
75
75
  class MyClass {
76
76
  constructor(){
77
77
  this._publicElements = {
78
- editorInput: new editorInputInterface("postText", "postTitle", "input[name='post_label']", "input[name='post_seo_about']")
78
+ editorInput: new editorInputInterface("postText", "postTitle", "input[name='post_label']", "input[name='post_seo_about']"),
79
- },
80
79
  // .
81
80
  // .
82
81
  // .