9・10行目のコメントアウトを外して、11行目を削除すれば正しく作動します。
でも11行目の記述でも動いてくれるように思うのですが、駄目な理由が理解できません。
よろしくお願い致します。
// 要素オブジェクトの取得 let getResult = document.getElementById('getResult'); let result = document.getElementById('result'); // おみくじオブジェクトの定義 let omikuji = { results: ['大吉', '吉', '中吉', '小吉', '凶'], getResult() { // let results = this.results; // return results[Math.floor(Math.random() * results.length)]; return results[Math.floor(Math.random() * this.results.length)]; } } // イベントの登録 getResult.addEventListener('click', function() { result.innerHTML = '結果は「' + omikuji.getResult() + '」でした。'; });
<!DOCTYPE html> <html lang="jp"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>おみくじ</h1> <p> <input type="button" id="getResult" value="おみくじを引く"> </p> <div id="result"></div> <script src="js/sample.js"></script> </body> </html>
「いちばんやさしいJavaScriptの教科書 P175」より
著者に問い合わせては。
意図や理由は書いた人にしか分かりません。
まずその11行目でなぜ最初の return results のところでthisが不要だと判断したのかを解説して欲しい。(説明文に追記して)
this.results.lengthにはthisを付けてるということは、あなたの中でthisが必要か不要かの判断について、何かしら普通の人が思いつかない基準がありそうに見える。
gentaro様、返信ありがとうございます。
単に変数を増やさずに記述した方が、コードが簡潔になるのではと
思ったからです。
質問はそこではなく、一行の中で何故thisが必要なものと不要なものの判断が異なっているのか、という点です。
回答1件
あなたの回答
tips
プレビュー