+ JavaScript の質問用スレッド vol.126 +

レス数が900を超えています。1000を超えると表示できなくなるよ。
2018/06/02(土) 14:31:23.04ID:B1JKBGEy
JavaScript を自ら学ぶ人のための質問スレッドです。

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。>>2の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。


前スレ
+ JavaScript の質問用スレッド vol.125 +
https://mevius.5ch.net/test/read.cgi/tech/1518940081/

(ライブラリ禁止条項は、多数の意見によって廃止されました。ライブラリの質問もOKです)
823デフォルトの名無しさん
垢版 |
2019/01/08(火) 01:00:58.27ID:o7vKw7lQ
dirty bitとかのdirtyと同じ
ただ「描き込みがされる、変更がされる」という意味なだけ
2019/01/08(火) 02:56:28.08ID:Wrr+1l7l
汚ねぇ花火だなのdirtyと一緒?
2019/01/12(土) 07:29:22.71ID:7un73cLT
どうやったら習得できるんでしょうか?
授業だけでは全然習得できませんでした
jQueryをコピペするだけしかできません

教科書書き写せって言われたのでしていますが
タイピング練習している気分で、1行1行
何かいてるか理解できていません

読めないから見るのも嫌になってます
初心者の時に何やってたか教えてください
2019/01/12(土) 09:25:53.56ID:Ybdj3XEu
>>825
> 授業だけでは
> 教科書書き写せって言われたのでしていますが
どこでどういう風に習ったんだ?
JavaScriptは比較的簡単な言語ではあるが、
授業で習った程度で出来るようになると思っている時点で大間違いだぞ。
ズブの初心者が数時間で出来るようになるのなら、専門職として成立しないだろ。
2019/01/12(土) 09:56:20.35ID:Ybdj3XEu
あと、どこを目指している?
Webデザイナになりたいのなら、そんなもんで構わないとも思うが。
2019/01/12(土) 10:13:31.48ID:8njw2BgM
コピペして必要になったら理解するための勉強すればいいんじゃね
それだと基礎ができてねえとか言われるしクソコードになるけど
基礎勉強していてもどうせクソコードと言われるんだしな
2019/01/12(土) 15:57:47.77ID:xa1AucJl
詐欺プログラミングスクールの何週間でプロに、とか3ヶ月でマスター全部ウソだから。
宗教ビジネスとかに近いやり口だよアレ。規制・逮捕・投獄すればいいのに。
2019/01/12(土) 16:28:36.05ID:gZqMJwxN
>>825
読めないし意味がわからないのは当たり前だし
それをどうこうする方法もない

新しいことを学ぶというのは非常に困難なことだと理解しろ
数学や国語だって頭の柔らかい子供がきっちり何百年もかけて練られた
体系立てられた教育で10年以上もかけてやっと習得できるものなんだぞ
つまりざっと1000時間は必要ということだ
もちろん1000時間かけても分からない人も居る
でも自分の頭を信じて、わからないものが分かるようになれると信じて
いやいや苦しいながら1000時間頑張る以外無いんだよ

とりあえずチュートリアル的なサイトを最初はコピペから一通りやる
そのときにちょっと改変してみたりしてどう結果が変わるのかから
それがどういう意味をもつ行為だったのか、そこがどういう効果をもつ部分だったのかを理解していく
意味が分からないことが100出てきたら、ググり倒してなんとかそれを99にするよう必死に努力する
多少程度分かるようになってきたらもう一度MDNのような網羅的に載っているとこをみて自分が知らない知識を仕入れる
構文やAPIは別に暗記する必要はない こういうことに使えるものがあるということをできるだけ知っておく

その繰り返し つまり基礎と応用を行ったり来たりして
段階的にではなくまんべんなく少しずつ積み重ねていき、ある時からはその穴を埋めていく
基礎はだいたいわかったと思ったら、ググって他人の書いたコードを見る
そうすると自分の知らない書き方や機能が使われていて、しかも非常に読みにくい
でもそれに慣れていく

もう一度MDNを全部隅から隅まで必ず読む
JS再入門をやってみる それで中級者
各構文の詳細をきっきり理解し、スコープチェーンやプロトタイプチェーンといった概念を学び
今まで何となく書いてきたものの真意を理解する
構文やAPIを仕様書を直接見て理解できるようにする
基本的な仕様書を一通り必ず読む それで上級者
そっからは自分の好きなコミュニティに所属して深掘りする
2019/01/12(土) 16:39:55.64ID:9/u5urH+
>>830
長い
2019/01/12(土) 17:08:51.58ID:XDHakXaX
>>825
初心というか、新しいことを始めるときにはだいたいこんな感じ。
1) 適当に検索して必要な部品をコピペする
2) コピペ同士の整合性確保と自分の美意識に従って整形する
3) 時間が許す限り 2 を繰り返す
4) 試験する

整形するところで、たとえば未知の関数ならその役割や必要なパラメータを理解する必要があるし。
コピペを適当に順序を組み替えてみると予期しないエラーが生じることもあるから、その原因を調べることで理解が深まったりするし。
要は好奇心が自分を動かしてるんだろうな。そりゃ打ち込みだけなら眠くなるだけだわ。
2019/01/12(土) 19:02:39.47ID:7un73cLT
たくさんのレスありがとうございました。
ちょっとやる気出てきました
が、道のりは険しそうですね

webの専門学校の授業でhtmlとcssを学び
ページは作れるようになったものの
javascriptはよくわからないまま授業が終わり
今はphpを覚えさせられてる段階です
3ヶ月ぐらいです

授業は教科書一冊を前から順番に終わらせた感じですが
先生はcssで出来るなら無理にjavascriptを使わなくて良いって言ってました
先生も他の言語が得意みたいで、あまりjavascriptは詳しそうな感じではなかったです

jQueryはどんなライブラリがあるのかを知り、
それを確実にコピペができることが大事って言われたのですが
コードが読めないjQueryをコピペするのはあまり面白くありませんでした

目指してるのはwebアプリとかゲームとか個人で作りたいです
javascript(Vue.js)とphp(laravel)を覚えてアプリを作ろうと考えています
将来グーグルアプリやアップルストアに置いたりしたいです

MDNは先生もおすすめしていますが
難しすぎるのと、同時に画面表示すると作業しにくいので本を書き写しています
まだ寝るまで時間あるので引き続き書き写ししようと思います

クラスで取り残されてて、あんまり質問できない空気なので
意見もらえて勉強になりました
2019/01/12(土) 19:42:31.64ID:Ybdj3XEu
>>833
> 同時に画面表示すると作業しにくいので本を書き写しています
今すぐ2画面にして、片方でMDNを見ながらもう片方でコーディングする癖を付けろ。
今なら2万円くらいで出来るはず。
そして今すぐゲーム作成に着手しろ。(詳細後述)

> (略) 3ヶ月ぐらいです
ズブの素人からか?ならそんなもんだ。
君が特に頭が悪いって事ではない。

> コードが読めないjQueryをコピペするのはあまり面白くありませんでした
これはもうやらなくていい。時間の無駄だ。

> 目指してるのはwebアプリとかゲームとか個人で作りたいです
> javascript(Vue.js)とphp(laravel)を覚えてアプリを作ろうと考えています
Webで言う「アプリ」は「ドキュメント」と対比されるもので、
上記jQueryを使うのは主に「ドキュメント」であり、つまり君にはjQueryの知識は不要だ。
そして、「アプリ」と言われるのは実はHTML主体のアプリ(ECサイト/掲示板/社内クライアント(勤怠管理等))であって、
これら向けのフレームワークがvueであり、またサーバーサイドの知識も有った方がいいからPHPもありだが、
君の目標のcanvasアプリでは、はっきり言ってvueやPHPの知識はいらない。

君の専門学校は一般的なHTML/CSS/JavaScript/PHPの講習をしており、これ自体は悪くない。
しかし君にはjQueryもvueもPHPも必要なく、今現在のHTML/CSS/JavaScriptだけで出来る。
だから今すぐゲーム作りに着手しろ。最初は○×ゲームやオセロ等で構わない。

プログラミングなんて手段でしかないから、結局のところ、モチベーションが上がらないと上達もしない。
写経の際にいじくり倒して快感を得られるタイプなら写経も効果あるが、
君の場合はそうではないのだから、写経は時間の無駄だ。
一応の知識は揃っているはずだから、君は今すぐ君がやりたいこと、例えばゲームを試しに作ってみることだ。
そうすれば、今の自分に何が足りないか分かるだろうし、そこを先生に聞けばいいんだよ。
折角金払って専門学校に行っているのだから、先生をうまく活用した方がいい。
2019/01/12(土) 20:05:20.01ID:Ybdj3XEu
ちなみに、今時のPCで2画面出力出来ないのはほぼあり得ないし、
TVが有ればHDMI端子がないのもほぼあり得ない。
そして、線をつなげば割と自動認識していきなり2画面になるという安直さ。

まあ、TVが有ればやってみ。
2019/01/12(土) 20:59:34.69ID:7un73cLT
詳しくありがとうございます

クラスではipadを見ながらやってるって人がいて
うらやましいと思ってましたが、2画面って方法があるんですね
勉強のためにバイトやめてしまったので今お金がないです(T_T)
お金でき次第買います

今すぐ、ゲーム作りですか?
見た目を用意するのはhtmlで出来そうですが
参考書でも買わないと作れないですね

作りたいゲームはあると言えばあるので
明日本屋で見て、できそうならやってみます
2019/01/12(土) 22:20:16.81ID:Ybdj3XEu
>>836
> クラスではipadを見ながらやってるって人がいて
それと同等にはなる。
スマホだとさすがにきついと思うから、安物でいいからモニタを買った方がいい。
つか、専門学校なら最初から2画面にしとけよ、とは思うが。(君が悪いわけではないが)

> 見た目を用意するのはhtmlで出来そうですが
それでいい。
見た目だけ、例えばオセロならまず盤面をHTMLで用意するところから始める。
次に、クリックしたら石をおくようにする。つまりはクリックしたところにクラスを加えるだけだが。
そしたら、後は、「挟んだ石は自動的にひっくり返る」ようにすれば、手動での対戦は出来るようになる。
そして後はCPUで適切な手を考えられるようにすれば、CPUとの対戦が出来るようになる、というわけだ。

これ読んで大体「オセロなら出来そうだ」と思えるか?
なら、もう十分だから、アイデアもあるようだし、それに取りかかった方がいい。
やらないと上達しない。やる為には、自分がやりたいことをやるのが一番いい。
本を買う必要は無いとも思うが、まあ思うようにやればいい。
2019/01/13(日) 10:01:03.08ID:ZUrC3wug
ただゲームを作りたいというだけなのに練習にしろ本番にしろ
HTML/CSS/JSのセットを学ぶ必要性はない
Google Blockyやプチコンのようなもので学んだほうが良い
2019/01/13(日) 10:14:09.92ID:/M42Y9uV
HTML/CSS/JSのセットを学ぶことは無駄にはならんよ。
今後のGUIの主流になりつつあるから。
ただ、ゲームを作りたいだけならオーバースペックだ、というだけで。
2019/01/13(日) 10:32:25.08ID:/M42Y9uV
あとその手の「初心者でも子供でも簡単に出来る」って奴は大概すぐポシャるので俺は勧めないね。
scratchが一時期言われてたけど、今全く聞かないでしょ。
何故プロがそれらを使わないのかを理解出来ないうちは、所詮その程度って事だよ。

専門学校はプロ養成予備校みたいな位置づけだし、今ならHTML/CSS/JavaScriptで妥当だ。
当人は「学ばないと出来ない」という感覚なのか、出来ない理由を探しているから、
そうではなく、出来るところから始めろ、というだけ。

JavaScriptはコミュニティが腐っているが、言語としてはまあまあだよ。
そこで上達出来るかは本人次第だ。
とはいえ、初心者だと雑音を雑音と認識することも難しいから、難儀な話ではあるが。
2019/01/14(月) 14:10:49.06ID:qAC/hIw5
このスレはじめてきたけど、上の方でjQueryをやたら推してる人って頭おかしいの?
2019/01/14(月) 14:47:13.30ID:WA0+I2lc
jQuery推しがおかしいかおかしくないかはどうでも良くて
それに論理的に反論できないならば、言ってることは正しいってことさ
2019/01/14(月) 14:50:15.30ID:qAC/hIw5
えっ、jQueryおじさんが反論を理解できていないだけじゃないの?
2019/01/14(月) 15:20:39.58ID:WA0+I2lc
それは違うな。
2019/01/14(月) 16:57:53.59ID:MmdBprG3
>>843
そうだよ
2019/01/14(月) 17:36:34.87ID:WA0+I2lc
jQueryのシェアがまた伸びてた。73.7%。5ヶ月連続で毎月0.1%増えてる。
0.1%増加なんて僅かだと思うかもしれないが、
Reactの現在のシェア(増加ではない)が0.2%、Vueが0.2%、Angularが0.4%
https://w3techs.com/technologies/history_overview/javascript_library/all
2019/01/14(月) 18:16:36.57ID:ft32dWPM
>>843
× 反論を理解できていない
○ 何も理解出来ていない
2019/01/14(月) 21:49:08.71ID:E+94DXGY
shadow-root(attachShadow)って何ができるの?
ふつーに要素を作るんじゃなくて使うってことは何かできることがあると思って
2019/01/15(火) 19:19:49.80ID:Mzm8zFRT
jQuery使わない人の声だけがでかいのはわかる
javascriptフレームワークなんて誰も使ってない
2019/01/15(火) 19:25:43.57ID:URfldHzA
声がでかいのはjQueryバカだが。
2019/01/15(火) 20:18:42.32ID:XcHWZlYr
jQuery厨は結局「jQueryは不滅です」と言い張るだけだから議論する意味はない。
実際はじきに結論がでるから待てばいい。

予想するなら、version3に上げている連中(6.4%)は今後とも使う気なのだと思う。
今だにversion1を使っている(=バージョンを上げてまで使う気はない)のが大半(85.7%)で、
つまり大半は様子見中で、だからこそこの話に食いつく奴が多い。
https://w3techs.com/technologies/details/js-jquery/all/all

このサイトのシェアはサイト数で算出しているから、
どうしてもvue等の「アプリ」用フレームワークは低く出る。
とはいえ、それを勘案しても実際に低いのも事実だが。
https://w3techs.com/technologies/topsite/javascript_library
2019/01/15(火) 20:21:33.86ID:JZTSzU8d
> 実際はじきに結論がでるから待てばいい。

いつでるんだよ・・・もう3年経ってるぞ
2019/01/15(火) 20:33:42.53ID:XcHWZlYr
>>852
>>369
俺は堂々巡りの話はもうやらない。

jQueryと心中するのも、脱jQueryするのも、自由。
それぞれが自分が正しいと思う方向に向かって進めばいいだけ。
シェアを過度に気にするのは、自分で判断出来ない証拠。
2019/01/15(火) 20:40:39.71ID:JZTSzU8d
シェアを気にしてるんじゃないんだよ。合理的な判断から。
ウェブの大半を占めるウェブサイトを作ってるのはウェブデザイナーが大半で
ウェブアプリを開発してるのはごく一部。そんなところにプログラミングが主である
React、Angular、Vueが普及するわけもなく、殆どは軽い使い方しかしてないんだから
jQueryで必要十分だってこと
シェアは単にそれを証明している指標に過ぎない
2019/01/15(火) 21:23:45.38ID:o/u10+7j
これからはBackboneや!
これからはEmberや!
これからはKnockoutや!
これからはAngular1や!

フレームワーク使ってるほうが死亡してるんだけどな
2019/01/15(火) 21:26:47.44ID:XcHWZlYr
>>854
サイト数で言えば「ドキュメント」が多いだけで、
トラフィックの大半は「アプリ」ないしはニュースサイト等の「軽量アプリ+DB」だよ。
つかそれ前にも言ったけど、お前普段どんなサイトを見てるんだよまじで。

とりあえず単純に定義しておくと、以下な。
アプリ: ajaxやPOST使いまくり
軽量アプリ: POST機能はあるが主ではない
ドキュメント: ajaxやPOSTは全くない
2019/01/15(火) 21:31:34.93ID:+Q2URMA7
>>856
そんな定義初めて見たわ
2019/01/15(火) 21:31:43.02ID:o/u10+7j
トラフィックの大半は映像、JavaScript関係ないがな

世界のインターネットトラフィックの過半数を「映像視聴」が占めている
https://gigazine.net/news/20181003-global-internet-downstream/
2019/01/15(火) 21:41:47.16ID:XcHWZlYr
>>858
ああ、まあそりゃそうだ。
ただ、その手のサイトは普通「アプリ」だと思うぞ。

が、まあ、それなら、ダウンストリームを除いて、アップトラフィック、で測るべきだな。
回線速度サイト等で言う、「上り回線」内のトラフィック数だ。
(映像視聴中もping的なアップトラフィックがあるのは知っているが、それらは除いて)
2019/01/15(火) 21:48:27.78ID:XcHWZlYr
>>857
ならお前がもっと『ここでの議論に適した』いい定義を出せばいいだけの話
お前らゆとりはそういうところが駄目なんだよ
2019/01/15(火) 21:49:57.09ID:o/u10+7j
>>859
連想ゲームやってるんじゃねーんだ

トラフィックが多いのは映像
映像はアプリ
アプリはJavaScriptを使ってる
だからトラフィックが多いのはJavaScript

違うからな。
ゲームで考えてみろ。多いのはデータであって
プログラムじゃねぇ
2019/01/15(火) 21:56:31.56ID:XcHWZlYr
>>861
バカなのかお前は。
話が見えてないなら読み直せドアホ。
2019/01/15(火) 22:31:29.43ID:Jm3tkwyg
LayeredAPI使って帯域節約していきましょうってことでしょ
2019/01/15(火) 22:56:55.97ID:panAyOn8
>>854
>>861
>>862
勉強して出直してこい
2019/01/15(火) 23:01:45.06ID:+Q2URMA7
>>860
オレオレ定義で妄想おつ
2019/01/16(水) 06:46:16.07ID:2Lqji3T2
な? >>864のように声だけデカイんだよ
2019/01/19(土) 03:47:07.72ID:pxg53bXv
list.map(x => new Hoge(x))
これを
list.map(Hoge)
みたいに書きたいんですが出来ませんか?
staticでファクトリーメソッド実装するしかない?
868デフォルトの名無しさん
垢版 |
2019/01/19(土) 06:14:08.63ID:xhDg2W2P
>>867
const Hoge = class {
constructor(a) {
this.a = a;
}
}

const hogeProxy = new Proxy(Hoge, {
get: (target, key) => key === target.name ? x => new target(x) : target[key],
has: (target, key) => (key in target || key === target.name) ? true : false,
})

with (hogeProxy) {
console.log([1, 2, 3].map(Hoge));
}

//=> [Hoge {a: 1}, Hoge {a: 2}, Hoge {a: 3}]
2019/01/19(土) 08:42:38.70ID:NKRnmbDh
>>867

class Hoge {
 constructor(x) {
  this.x = x;
 }
}

function foo(Hoge) {
 list.map(Hoge);
}

foo(x => new Hoge(x))
2019/01/19(土) 10:11:49.19ID:61MkY90x
>>867
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/getPrototypeOf
2019/01/19(土) 15:43:36.73ID:wiNfQeeu
Ruby では、: で始まるシンボルで、メソッド名を渡すことで、インスタンスメソッドを呼べる

# 数値に変換してから、配列内のすべての数字を足す

puts numbers.map(&:to_i).inject(:+)
872デフォルトの名無しさん
垢版 |
2019/01/19(土) 15:58:41.16ID:xhDg2W2P
655 デフォルトの名無しさん sage 2018/10/15(月) 05:44:32.10 ID:5+V16LLD
>>649
メソッドにしておくと select(&::positive?) と書けるという理由だった気がする

657 デフォルトの名無しさん 2018/10/15(月) 09:25:55.90 ID:/ogVl406
>>655
きったねえ文法だなぁw
美しい(笑)
疑似コードがそのまま動く(笑)
&::とかの意味不明な疑似コードがどこにあるってんだよwww

658 デフォルトの名無しさん sage 2018/10/15(月) 10:09:06.69 ID:r7U1tD/N
擬似コードがそのまま動くのはPythonじゃね
関数型言語なら演算子がそのまま第一級関数であることとカリー化を使って data |> select ((>) 0) みたいに書けたりするね
ガチ関数型でなくてもまともなラムダがある言語なら select(x => x > 0) と遥かに見通し良く書ける
Rubyの &:: は極めて驚きが大きく醜悪な機能の一つだね
2019/01/19(土) 16:23:10.62ID:NKRnmbDh
>>871
> Ruby では、: で始まるシンボルで、メソッド名を渡すことで、インスタンスメソッドを呼べる

シンボルってただの文字列と変わらないからね
定義しなくて使えるから、タイポしてもエラーになるわけじゃないし
2019/01/19(土) 16:34:18.49ID:TO8T1N5e
>>867ですがいろいろとありがとうございます。
list.map(Number)ができるならlist.map(Hoge)もできるんじゃないかと思ったのですが、一筋縄では行かないようですね
おうちゃくせずに素直に仮引数つけます
2019/01/19(土) 16:57:46.13ID:TeWxng+0
昔はコンストラクタがただの関数だったから、class構文にしなきゃできるな
es5にトランスパイルすればいける
2019/01/19(土) 17:01:01.38ID:ukgk9vnp
>>875
なるほどね。何のこっちゃと思ったがそういうことか。
877デフォルトの名無しさん
垢版 |
2019/01/19(土) 17:17:55.46ID:SwmccsG2
コンパイラエラー C2872 あいまいなシンボルです。

コンパイルエラーが解消出来ません。
ご教授下さい。

■コンパイルエラー内容
error C2872: 'MarketplaceWebServiceProducts' : あいまいなシンボルです

■やりたいこと
AmazonのAPI「Marketplace Web Service API (MWS)」のHello world

以下ページの右上 オレンジ色の「Download」ボタンから入手できる
「MWSProducts_2011-10-01_v2017-03-22.dll」の使用
https://developer.amazonservices.jp/doc/products/products/v20111001/cSharp.html

■DLLの使用
Visual Studioの対象プロジェクトのプロパティから、
上記DLLの参照を追加しました

■コーディング
using namespace MarketplaceWebServiceProducts;//←ここはコンパイルOK
using namespace MarketplaceWebServiceProducts::Mock;//←★ここで上記コンパイルエラー

■ご質問
上位の「MarketplaceWebServiceProducts」が正常なのに、
下位の「Mock」を付けるとあいまいなシンボルになるのはなぜでしょうか。
解決策をご教授ください。(可能であれば実装をご提供ください)

■環境
Visual Studio
.Net 4.0
C++/Cli
2019/01/19(土) 17:43:38.99ID:TqFwYkHH
スレタイ音読
2019/01/19(土) 18:28:01.65ID:wiNfQeeu
>本当にありがとうございます!!!!!!!!!!!!
>キモヲタ万歳!!!!!!キモヲタ役に立つ!!!!!!!!

この質問者は、荒らしだから、無視しろ!
880デフォルトの名無しさん
垢版 |
2019/01/19(土) 19:13:31.85ID:42e10N7I
>>875
いや、できないだろ
普通に読んだらthisがインスタンスとならないのだから
2019/01/19(土) 19:25:13.47ID:ZDGn0g7S
だから場合分けするんだよ
2019/01/19(土) 19:30:47.77ID:42e10N7I
Hogeの方で工夫するのならスタティックメソッドを生やすのとえっと変わらんじゃん
もしくはHoge.aryFrom(list) みたいなの用意してもいいんだし
2019/01/19(土) 19:33:39.03ID:NKRnmbDh
はは、Rubyじゃあるまいし、カッコつけないと
関数呼び出しにならないのに、どうやって場合分けするっていうんだ
はは
2019/01/19(土) 19:39:24.01ID:ZDGn0g7S
関数形式で呼ばれたか、コンストラクタとして呼ばれたかで分けるってことだよ
昔みんなやってたじゃん

>>882
そうだよ。変わらんよ。だからどうしたって話だし
885870
垢版 |
2019/01/19(土) 21:57:39.95ID:7Q3X+Msh
>>884
そう書いたんだが、全く伝わってなかった
2019/01/20(日) 00:27:30.68ID:40HwJ7d/
> list.map(x => new Hoge(x))
> これを
> list.map(Hoge)
> みたいに書きたいんですが出来ませんか?

Hogeのどこが関数なの?
関数っていうのはHoge()ってやらないといけないんだよ?
ほんとうに情けないんわ
887デフォルトの名無しさん
垢版 |
2019/01/20(日) 00:37:29.30ID:62lK6b9v
const double = n => n * 2;
[1, 2, 3].map(double);
//=> [2, 4, 6]

ワロタwww
>>886によるとこのdoubleは関数じゃないらしいw
double(1)みたいな呼び出しじゃないからだってwwwww
888デフォルトの名無しさん
垢版 |
2019/01/20(日) 00:42:24.82ID:62lK6b9v
class Hoge { 
constructor(x) {  
this.x = x; 
}
}
console.log(typeof Hoge);
//=> function


> Hogeのどこが関数なの?

wwwww
2019/01/20(日) 01:16:35.87ID:U54SgNBZ
>>888

お前はこの意味がわかってないんだな

> 関数形式で呼ばれたか、コンストラクタとして呼ばれたかで分けるってことだよ

list.map(Hoge) のHogeは
関数形式で呼ばれたか、コンストラクタとして呼ばれたか
どっちか言ってみ
890デフォルトの名無しさん
垢版 |
2019/01/20(日) 01:58:00.54ID:62lK6b9v
そんな雑魚レス見てないし関係ない。

> 関数っていうのはHoge()ってやらないといけないんだよ?

これは恥ずかしい誤りwww
反例
[1, 2, 3].forEach(console.log)
891デフォルトの名無しさん
垢版 |
2019/01/20(日) 05:48:06.80ID:y/Svh0b0
spanやdivのクリックイベントを、buttonと同じ要素に出来ないでしょうか?

コンソールでイベントを確認すると、currentTargetが
divはHTMLParagraphElementで、buttonはHTMLButtonElementになっています。

CSSでdivタグをボタン風にしていることもあるので、
Javascript上でもボタン扱いしたいのですが、書き方次第で変更できるのでしょうか?
2019/01/20(日) 07:49:29.85ID:U54SgNBZ
>>890
なんだ?お前重箱の隅ばかりついて、
関数形式で呼ばれたか、コンストラクタとして呼ばれたかで分けても

元の質問者の希望である
list.map(Hoge) とはかけないってことに
まだ気づいてないのか?
2019/01/20(日) 07:51:00.80ID:U54SgNBZ
>>891
$('span, div, button').click(function() {
 console.log(this);
});
2019/01/20(日) 09:12:39.85ID:fBsdchbe
>>891
同じHTMLElementだというのがOOPの考え方
ただしHTMLでは徹底出来てないから要注意だが

とはいえ、実際同じとして扱って書いても問題なく動くはず
やってみてから言え
2019/01/20(日) 10:08:42.25ID:U54SgNBZ
>>891
> CSSでdivタグをボタン風にしていることもあるので、
> Javascript上でもボタン扱いしたいのですが、書き方次第で変更できるのでしょうか?

そもそもdivタグをボタンにするのが間違い。
そこにクリックできるボタンがあるのなら、ボタンで作るのが正しい
見た目はCSSで変える。何がほしいか?ボタンがほしいならボタンを使う。それだけのこと
2019/01/20(日) 10:15:54.36ID:z7e/RJqb
>>891 アクセシビリティ上の問題があるから >>895 の意見に同意
素直に button 要素なり a 要素なりを使っとけー
2019/01/20(日) 12:26:13.71ID:CrxCXx63
>>896
ボタンにa要素はお勧めしない
2019/01/20(日) 15:35:58.63ID:pkTQkmr2
>divはHTMLParagraphElementで、buttonはHTMLButtonElementになっています
多分どちらも、HTMLElement から派生したクラスじゃないの?

Vue.js では、ルーター用のリンクを、<a> タグ以外にも変えられる

<router-link to="/foo" tag="li">foo</router-link>
<!-- 以下のように描画されます -->
<li>foo</li>

tag="button" で、ボタンにもできる
2019/01/20(日) 23:43:12.79ID:y/Svh0b0
>>893-894
そういうことではなく、divをクリックしたら
Javascript的に「これはボタン要素です」って認識させたいんです。

>>895-896
確かにそうなんですが、UIとかボタンじゃないほうが良い場合が多々あるんです。
でもデザイン的にボタン風が良いので、spanやdivで代用します。(よく利用されています

<a href="javascript::void(0);" class="button">ボタン</a>で、a要素をボタンにもできますが、
aは使いにくいんですよね。やっぱりデザイン的に使いたいだけなんで、spanかdivなんです。

>>898
Vue.jsは知りませんが、イメージとしてはそういうことがしたいです。
HTML5とかJavascriptとかjQueryとかで可能なら一番なのですが・・・
2019/01/20(日) 23:53:43.09ID:enluc8/B
そもそもJSにdivをbuttonとして誤認識させた後に何をしたいのかがよくわからないけど、どうしてもHTMLButtonElementにしたいってのが目的ならそういうコンバーターなり何なりを作るしかないんじゃないの
2019/01/21(月) 00:11:05.42ID:oLr+arIk
>>899
意味不明。初心者が馬鹿やろうとしてるとしか。

JavaScriptも24年の歴史があり、広く使われているのだから、
初心者が思いつくようなところで今更困ることはほぼ無い。
それはやり方を間違えているだけ。
多分CSSについて勉強した方がいい。
2019/01/21(月) 00:55:24.42ID:DW5LJSe/
この世にIEという存在がなければそんな変なことは考えないのですが、
IEの利用者がまだいてbuttonのクリックイベントと、divのクリックイベントでは
差異があるので、なんとかしようと考えた次第です。

とりあえず「簡単にはできないし、まず無理」という結論であればそれを受け入れます。
2019/01/21(月) 01:12:29.24ID:oLr+arIk
>>902
馬鹿乙

IEなんて大昔からあるだろ。
それが本当に必要なら、誰かが既に開発して、それこそjQueryにでも搭載されてるよ。
無い=要らない、ってことなんだよ。初心者ならやり方を間違ってるだけ。
2019/01/21(月) 01:17:37.84ID:WT3LElYg
挙動を統一したいならCanvasでやれ
そういうフレームワークも増えてきてる
2019/01/21(月) 05:38:32.19ID:VYjLMLtx
またcanvasおじさんが湧いた

>>899
ボタン要素でスタイルシートでお好みのデザインに合わせればいいよ
2019/01/21(月) 07:58:41.38ID:vkfJXJ7K
カード型みたいにボックスの中に画像、タイトル、アイコン、とかいろんな要素があって
そのカードがボタンの役割をしているならdivでもいいんじゃないの?

むしろbuttonタグの中にdivやらspanやら、iとかいろいろ要素ぶっ込むものなのかね?
2019/01/21(月) 08:15:29.19ID:ubpSrO6v
ieがdivのクリックイベントを拾わない…?
2019/01/21(月) 08:30:56.83ID:8RTHI8s9
>>899
UIだけなら、CSSでボタンライクではないようにも変更できるわけでdiv要素を使う理由はない
2019/01/21(月) 09:28:46.72ID:63p0KSKR
>>907
Enterキー押下時のclickイベント拾わない話じゃねーかとエスパーしてみる
それは他のブラウザでも同じなので、keydownイベント拾ってEnterキーだけ抽出してclickイベント時と同じ挙動をさせるしかないよね
shift/alt/meta/ctrlキー同時押しはもちろん排除するとしてさ
2019/01/21(月) 12:48:28.69ID:DT8npDQe
>>909
それだけなら、tabindex属性付与だけで実装可能ではないか?
ボタンの何をエミュレーションしたいのかがわからん、には同意
911デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:19:25.15ID:PNnv4t9U
javascriptでreplaceを用いた特定の文字の置換ができないです。

// サーバーからデータを受信したとき
function onReceive(data) {
let json = JSON.parse(data);
let messages = document.getElementById('chat');
let li = document.createElement('li');

if(json.text == 'おい'){
json.text = 'オイオイオイ'
}

// JSONから必要なデータを取り出して、テキストにする
li.innerHTML = json.count + ":" + "<span style='color:green'><big><b>ななしさん</b></big></span>" + "ID:" + socket.id + "<BR>" + json.text;
// 画面に要素を追加する
messages.appendChild(li);
}

これがソースコードの一部です。
このソースコードで、「おい」と打ったら「オイオイオイ」と返ってくるのですが、
「あいうおいえお」と打ったら「あいうおいえお」と返ってきます。
本当は「あいうオイオイオイえお」と返ってきてほしいです。
2019/01/21(月) 14:23:43.50ID:DqxQvGU+
replace使ってないから
913デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:27:21.86ID:PNnv4t9U
if(json.text == 'おい'){
json.text = 'オイオイオイ'
}

上記の部分を

json.text.replace('おい','オイオイオイ')

にしたら何も表示されなくなってしまいました。
2019/01/21(月) 14:31:42.02ID:DqxQvGU+
>>913
だされた課題は自分でやれ

どうせ本当に出された問題は
「以下のコードをreplaceを使って書き直しましょう」
なんだろ?

答えを聞くな
915デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:39:13.61ID:PNnv4t9U
>>914
違います。
課題は課題なんですけど、
課題内容は「リアルタイム通信を使用してアプリケーションを作ろう」です。
課題の一部がどうしてもわからないので聞いています。
916デフォルトの名無しさん
垢版 |
2019/01/21(月) 14:40:34.76ID:PNnv4t9U
>>914
的外れな返信でした。
ごめんなさい。
2019/01/21(月) 14:45:16.85ID:DqxQvGU+
replaceってヒントを貰ってるんだから、replaceについて調べればいいだけ
918デフォルトの名無しさん
垢版 |
2019/01/21(月) 16:01:51.07ID:PNnv4t9U
>>917
おい、おっさん。
こんな時間に即返信するとかなにやってんの?ニート?w
お前は「答えない」じゃなくて「答えられない」だろw
無能のくせにでしゃばるなよww
2019/01/21(月) 16:05:59.24ID:DqxQvGU+
無能ってすぐ人に答えを求めるよな
https://medaka.5ch.net/test/read.cgi/prog/1540885252/

やっぱり俺って有能なんだなあ
すぐ人に答えを求めたりしないしな
2019/01/21(月) 17:34:06.91ID:UEk4ntQa
# 詳しい人、知恵を貸してくれ。

div1 = document.createElement("div")、document.body.appendChild(div1)
として、div1 の style の position を absolute や fixed として、
style.top, style.left に座標を指定しても、以下のような affiliate がある場合、
newBox の margin の 100px と全く同じだけ、div1 の位置が下に下がってしまう。
仕様上は、position:absolute は、親要素であるところの body 要素の左上の点からの
相対位置で指定されるはずなのに、なぜだろう?
自分の理解では、以下の affiliate は、div1 などのもっとも年上の兄弟として
追加されるだけだから、div1 の位置には影響を与えないと思うんだが。

 var func = function(){
  var parent = document.getElementsByTagName("body")[0];

  var newBox = document.createElement("div");
  newBox.setAttribute('id', 'vdbanner');
  newBox.setAttribute("style","display:block!important;position:relative!important;top:0!important;left:0!important;margin:100px 0 !important;padding:0!important;text-align:center!important;");
  newBox.innerHTML = "広告内容";
  parent.insertBefore(newBox, parent.firstChild);
 }
 try {
  window.addEventListener("load", func, false);
 }
 catch(e) {
  window.attachEvent("onload", func);
 }
2019/01/21(月) 17:53:37.90ID:DqxQvGU+
長ったらしいので翻訳。まずimportant;は使うな

#vdbanner {
 display: block !important;
 position: relative !important;
 top: 0 !important;
 left: 0 !important;
 margin: 100px 0 !important;
 padding: 0 !important;
 text-align: center !important;
}

$(function() {
 $("<div/>", {id: 'vdbanner', text: '広告内容'}).prependTo('body');
});
922デフォルトの名無しさん
垢版 |
2019/01/21(月) 17:59:05.34ID:PNnv4t9U
できたぞ、質問に答えられないバカ

var result = json.text
for(var i=0;i<json.text.length;i++){
if(json.text[i] == 'お' && json.text[i+1]=='い'){
var tagetString = json.text;
var reString = /おい/gi; // 複数を置換する時は"g"を、
// 大文字/小文字の区別をしない場合には"i"を指定します。
var repStrung = "オイオイオイ";
result = tagetString.replace(reString, repStrung);
}
}
じゃあな無能
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況