回答編集履歴

1

Java に似た javascript のclass ブロックを追記

2019/11/01 11:12

投稿

AkitoshiManabe
AkitoshiManabe

スコア5432

test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
 
28
28
 
29
- if (new_vate !== old_vote) {
29
+ if (new_vote !== old_vote) {
30
30
 
31
31
  switch( new_vote ) {
32
32
 
@@ -61,3 +61,89 @@
61
61
 
62
62
 
63
63
  書籍に書いてあることはあくまでも参考にして、「自分ならこうする。」と考えることが大事じゃないかなぁ。
64
+
65
+
66
+
67
+ # Java に似た javascript のclass ブロックで書いてみました。
68
+
69
+ javascript はプロトタイプベースOO な言語ですが、Javaに近い疑似クラスベースOOです。
70
+
71
+ class ブロックで書けば Java にかなり似るかなと。
72
+
73
+
74
+
75
+ 1. javascript は型が代入時に推測決定する / Javaは型を明示しなければならない
76
+
77
+ 2. javascript はメンバに this を明示しなければならない。(Javaは不要)
78
+
79
+ 3. Java では明示しなければならないキャスト演算(型変換)が暗黙のうちに行われる。
80
+
81
+
82
+
83
+ コードを読む上でのポイントってそれだけでしょうね。
84
+
85
+
86
+
87
+
88
+
89
+ Java は 必ず何かしらのオブジェクトになるので、 Vote としておきます。
90
+
91
+ この条件で書き換えた結果がこうなりそうです。
92
+
93
+
94
+
95
+ ```javascript
96
+
97
+ import { get_score, set_score } from "./path/to/Score.js";
98
+
99
+
100
+
101
+ class Vote {
102
+
103
+
104
+
105
+ constructor() {
106
+
107
+ }
108
+
109
+
110
+
111
+ vote_changed(old_vote, new_vote) {
112
+
113
+ var score = get_score ();
114
+
115
+ score -= this.vote_value(old_vote);
116
+
117
+ score += this.vote_value(new_vote);
118
+
119
+ }
120
+
121
+
122
+
123
+ vote_value(vote) {
124
+
125
+ if (vote === 'Up') {
126
+
127
+ return +1;
128
+
129
+ }
130
+
131
+ if (vote === 'Down') {
132
+
133
+ return -1;
134
+
135
+ }
136
+
137
+ return 0;
138
+
139
+ }
140
+
141
+ }
142
+
143
+ ```
144
+
145
+
146
+
147
+ 書籍通りなら誤植ですね。
148
+
149
+ **ストレージに書き込まない状態**になっています。