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

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

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

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

Q&A

解決済

1回答

1257閲覧

<javascript>突然現れるプロパティ名について知りたい

k373

総合スコア17

JavaScript

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

0グッド

0クリップ

投稿2019/07/23 07:58

神経衰弱ゲームの作成を教本を参考に行なっております。

そこで、一点ソースコードで不明なことがあります。

下記ソースコードのtd.number = cards[i * 5 + j];という箇所です。
numberというプロパティはjavascriptではあらかじめ用意されていないようですが、突然出てきて理解できません。

javascript

1<!DOCTYPE html> 2<html lang="ja" dir="ltr"> 3 <head> 4 <meta charset="utf-8"> 5 <title>神経衰弱ゲーム</title> 6  <style> 7 td.card{ 8 width:100px; 9 height:140px; 10 border:1px solid blue; 11 border-radius:10px; 12 text-align:center; 13 font-size:36px; 14 background-color:white; 15 box-shadow: rgb(128, 128, 128)5px 5px; 16 } 17 td.back{ 18 background-color:#aaa; 19 background-size:100px 140px; 20 } 21 </style> 22 <script> 23 "use strict"; 24 //配列シャッフル 25 Array.prototype.shuffle = function(){ 26 var i = this.length; 27 while(i){ 28 var j = Math.floor(Math.random() * i); 29 var t = this[--i]; 30 this[i] = this[j]; 31 this[j] = t; 32 } 33 return this; 34 } 35 36 //広域変数 37 var timer = NaN; 38 var score = 0; 39 var flipTimer; 40 var prevCard; 41 var startTime; 42 43 //初期化関数 44 function init(){ 45 var table = document.getElementById("table"); 46 47 var cards = []; 48 for(var i = 1; i <= 10; i++){ 49 cards.push(i); 50 cards.push(i); 51 } 52 cards.shuffle(); 53 54 for(var i = 0; i < 4; i++){ 55 var tr = document.createElement("tr"); 56 for(var j = 0; j < 5; j++){ 57 var td = document.createElement("td"); 58 td.className = "card back"; 59 td.number = cards[i * 5 + j]; 60 td.onclick = flip; 61 tr.appendChild(td); 62 } 63 table.appendChild(tr); 64 } 65 66 startTime = new Date(); 67 timer = setInterval(tick, 1000); 68 } 69 70 //経過時間計測用タイマー 71 function tick(){ 72 var now = new Date(); 73 var elapsed = Math.floor((now.getTime() - startTime.getTime()) / 1000); 74 document.getElementById("time").textContent = elapsed; 75 } 76 77 //カード裏返し 78 function flip(e){ 79 var src = e.srcElement; 80 if(flipTimer || src.textContent !=""){ 81 return; 82 } 83 var num = src.number; 84 src.className = "card"; 85 src.textContent = num; 86 87 //1枚目 88 if(prevCard == null){ 89 prevCard = src; 90 return; 91 } 92 93 //2枚目 94 if(prevCard.number == num){ 95 if(++score == 10){ 96 clearInterval(timer); 97 } 98 prevCard = null; 99 clearTimeout(flipTimer); 100 }else{ 101 flipTimer = setTimeout(function(){ 102 src.className = "card back"; 103 src.textContent = ""; 104 prevCard.className = "card back"; 105 prevCard.textContent = ""; 106 prevCard = null; 107 flipTimer = NaN; 108 }, 1000); 109 } 110 } 111 </script> 112 </head> 113 <body onload = "init()"> 114 <table id ="table"></table> 115 <h2> 116 経過時間:<span id="time">0</span>117 </h2> 118 </body> 119</html> 120

やったこと
ググりましたが、どういったプロパティなのか発見できませんでした。

なので、numberという箇所(3箇所)を別名(vvvとか)に変えてみましたところ、問題なく動きました。

javascriptではプロパティを好きにつけることができるということでしょうか?
また、その場合、classNameやonclickとの違いはどういったことでしょうか?

ご教授お願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

javascriptではプロパティを好きにつけることができるということでしょうか?

はい、(書き込み禁止になっているオブジェクトでもなければ)勝手なプロパティを作成することが可能です。

また、その場合、classNameやonclickとの違いはどういったことでしょうか?

勝手に作ったプロパティは、ブラウザ側の動作に影響することはありません。…という回答でいいのでしょうか?


今のブラウザで気にする必要はほぼないのですが、昔はDOMノードに勝手なプロパティをつけるとメモリリークなどの不具合となるということで避けられていました。

投稿2019/07/23 08:04

maisumakun

総合スコア145183

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

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

k373

2019/07/23 11:00

ご回答ありがとうございます! 勝手にプロパティを作成できることを理解いたしました。 素早いご回答に感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問