[過去ログ]
JavaScript の質問用スレッド vol.125 (1002レス)
JavaScript の質問用スレッド vol.125 http://mevius.5ch.net/test/read.cgi/tech/1659855460/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
20: デフォルトの名無しさん (ワッチョイ ef02-Gxju [175.108.193.88]) [sage] 2022/08/19(金) 13:26:53.16 ID:v8JNzl630 japascriptは難しい。 初心者はまずはRubyから始めること そしてRuby on Railsを習得する javascriptyとjQueryはその後で良い。 こっちのスレで質問すれば親切な達人プログラマーがどんな質問にも懇切丁寧に答えてくれる。 ↓ Ruby 初心者スレッド Part 67 https://mevius.5ch.net/test/read.cgi/tech/1608837867/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/20
21: デフォルトの名無しさん (ワッチョイ 6b10-vj0F [180.12.82.129]) [] 2022/08/19(金) 18:14:31.50 ID:KbHvsoqL0 clickのタイミングについて <input type="button" value="クリック" id="bt"> let aaa=0; setInterval( function(){ aaa=100;aaa=200;aaa=300;aaa=400;aaa=500; },0 ); document.getElementById("bt").addEventListener( "click", function(e){alert(aaa);} ); 何回クリックしても500と表示されるけど500以外が表示されることはないんでしょうか? aaaが200のときにクリックが割り込むとかはないんですか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/21
22: デフォルトの名無しさん (ワッチョイ cb01-6z5t [60.74.210.62]) [] 2022/08/19(金) 18:41:35.47 ID:hN4Icouo0 >>21 タイマー処理の関数呼び出しの途中でイベントハンドラが処理されることはない http://mevius.5ch.net/test/read.cgi/tech/1659855460/22
23: デフォルトの名無しさん (ワッチョイ 6b10-vj0F [180.12.82.129]) [] 2022/08/19(金) 18:53:07.56 ID:KbHvsoqL0 >>22 どうもです タイマー以外のfunctionでもfunctionの途中でイベントハンドラが呼び出されることはないってことですか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/23
24: デフォルトの名無しさん (ワッチョイ cb01-6z5t [60.74.223.30]) [] 2022/08/19(金) 21:41:37.23 ID:PiTy7UnQ0 JavaScriptは基本シングルスレッド 関数の実行途中に別の関数の処理が割り込んでくるようなことはない http://mevius.5ch.net/test/read.cgi/tech/1659855460/24
25: デフォルトの名無しさん (ワッチョイ cb01-7Kul [60.87.221.16]) [sage] 2022/08/19(金) 23:29:36.47 ID:icsyH/kW0 >>23 非同期処理が混在していなければ、ない http://mevius.5ch.net/test/read.cgi/tech/1659855460/25
26: デフォルトの名無しさん (ワッチョイ 75b1-GYjw [118.105.228.94]) [sage] 2022/08/20(土) 10:52:07.09 ID:y/gx0kbE0 Wan、Lanどちらからもアクセス可能なWebサーバーで アクセス元がどっちなのかを判断する方法はありますか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/26
27: デフォルトの名無しさん (ワッチョイ 2301-cac/ [219.204.123.70]) [sage] 2022/08/20(土) 11:45:31.91 ID:ThG9yriU0 >>26 送信元アドレス見ればよくね? http://mevius.5ch.net/test/read.cgi/tech/1659855460/27
28: デフォルトの名無しさん (ワッチョイ 75e5-s78Y [118.4.80.52]) [] 2022/08/20(土) 12:02:01.28 ID:tDO3e6hW0 サーバーで判断すべきだろう クライアントで知りたいならサーバーに聞けばいい http://mevius.5ch.net/test/read.cgi/tech/1659855460/28
29: デフォルトの名無しさん (ワッチョイ 75b1-GYjw [118.105.228.94]) [sage] 2022/08/20(土) 12:48:23.28 ID:y/gx0kbE0 確かにそうですよね サーバー側で何とかしてみます http://mevius.5ch.net/test/read.cgi/tech/1659855460/29
30: デフォルトの名無しさん (スップ Sd43-PAk+ [49.97.96.68]) [] 2022/08/21(日) 00:53:25.42 ID:aTZvlMved ナンセンスな質問かもしれませんが、JavaScriptにおいて関数はデータ型としてオブジェクトであり、一方でオブジェクトはプロパティとメソッドの集まりであると説明されています。 関数とオブジェクトはどちらが先に定義されているのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/30
31: デフォルトの名無しさん (ワッチョイ d501-Nnom [60.87.221.16]) [sage] 2022/08/21(日) 07:04:02.83 ID:D11cwWL50 >>30 「先に定義」とは、どのような意味? http://mevius.5ch.net/test/read.cgi/tech/1659855460/31
32: デフォルトの名無しさん (スップ Sd03-PAk+ [1.66.101.132]) [] 2022/08/21(日) 10:31:51.96 ID:3ESrn3ezd >>31 先に存在しているとか先に実装されている(?)というようなイメージです http://mevius.5ch.net/test/read.cgi/tech/1659855460/32
33: デフォルトの名無しさん (ワッチョイ a37c-QAb4 [221.241.223.58]) [sage] 2022/08/21(日) 10:42:02.01 ID:KqCcLvyW0 >>30 定義が無限循環してると言いたいんだろうけど広辞苑にだってそういうのはあるし、関数ノットイコールメソッドと考えれば矛盾はしてない たぶんオブジェクトが先だろうけどね http://mevius.5ch.net/test/read.cgi/tech/1659855460/33
34: デフォルトの名無しさん (スップ Sd43-PAk+ [49.97.98.169]) [] 2022/08/21(日) 11:25:21.77 ID:df/SIE01d >>33 ありがとうございます もう少し調べてみると、 https://tc39.es/ecma262/multipage/overview.html#sec-ecmascript-overview でTerms and Definitionsのところに、関数はオブジェクトであってプロパティの他に実行可能なコードと状態を持つもの、という感じのことが書かれてて、メソッドはオブジェクトのプロパティの値である関数のことと書かれていました こちらの説明で一旦納得できました http://mevius.5ch.net/test/read.cgi/tech/1659855460/34
35: デフォルトの名無しさん (アウアウウー Sad9-dbST [106.181.223.3]) [] 2022/08/21(日) 11:46:37.18 ID:j3ukytx2a v8のソースでも読んでみれば http://mevius.5ch.net/test/read.cgi/tech/1659855460/35
36: デフォルトの名無しさん (ブーイモ MM8b-mKyu [133.159.148.135]) [sage] 2022/08/21(日) 12:32:17.30 ID:IBDK1msSM オブジェクトが先 オブジェクトはプロパティのコレクション プロパティとはkey/valueのペアのこと keyはStringでvalueはプリミティブかオブジェクト http://mevius.5ch.net/test/read.cgi/tech/1659855460/36
37: デフォルトの名無しさん (ブーイモ MM8b-mKyu [133.159.149.74]) [sage] 2022/08/21(日) 12:39:55.73 ID:ZOLz03eMM オブジェクトを定義するのにオブジェクトを使ったりStringという別のオブジェクト使えるの? と疑問に思うのかもしれないけど 定義が存在する(名前解決可能である)ことを確認するフェーズと 定義の中身を検証するフェーズを分けることで可能 foo関数の中でbar関数を呼び出しつつ bar関数の中でfoo関数を呼び出すような関数定義ができるのと同じこと http://mevius.5ch.net/test/read.cgi/tech/1659855460/37
38: デフォルトの名無しさん (ワッチョイ d501-dbST [60.87.221.16]) [sage] 2022/08/21(日) 15:06:45.69 ID:D11cwWL50 >>32 「実装」というが、「仕様」上で両方とも存在しているなら、同時に「実装」されるのでは? >>34 ES3には「オブジェクト」の定義はあるが、「関数」の定義はない 故に「歴史的にはオブジェクトが先に定義された」といえなくもないが、そんな回答を望んでいるようにも見えない http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/4_Overview.html#section-4.2.1 参考になるかわからないが、typeof演算子は「[[Call]] を持つObject型」の場合に "function" を返す https://262.ecma-international.org/13.0/#sec-typeof-operator http://mevius.5ch.net/test/read.cgi/tech/1659855460/38
39: デフォルトの名無しさん (スップ Sdc3-JVFl [1.72.7.185]) [sage] 2022/09/02(金) 16:08:14.77 ID:anBQQFEld ブックマークレットのスレッドかこちらか悩みましたが質問なのでこちらでご相談させていただきます。 他者のWebサイトを閲覧する際、JavaScriptを用いて作成されている場合、リンクを新しいタブで開けない場面があります。 頻繁にページを進んだり戻ったりする場面、可能であればリンク先を別タブで開くようにしたいです。 ブックマークレットを用いて、現在ページのJavaScriptのリンクを別タブで開くように書き換える処理をすることは可能でしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/39
40: デフォルトの名無しさん (ワッチョイ a3b7-83Bc [211.124.165.35]) [sage] 2022/09/02(金) 16:38:05.47 ID:avuNeQJi0 >>39 そのサイト次第かな クリックした後の画面を一発で開けるURLが用意されてたら基本的に実装できると思う http://mevius.5ch.net/test/read.cgi/tech/1659855460/40
41: デフォルトの名無しさん (ワッチョイ a52d-bBdM [220.100.64.9]) [sage] 2022/09/03(土) 00:11:31.61 ID:8AM/s+hA0 連想配列から特定のキーを検索して、重複がないもののみ取り出した配列を取得したいのですが、 このコードだと速度的に問題がありました。何か良い方法があったら教えていただけないでしょうか const a= [ {'id': 1, 'category': 'animal', 'kind': 'dog'}, {'id': 2, 'category': 'fruit', 'kind': 'apple'}, {'id': 3, 'category': 'fruit', 'kind': 'orange'}, {'id': 4, 'category': 'animal', 'kind': 'dog'}, {'id': 5, 'category': 'animal', 'kind': 'cat'}, {'id': 6, 'category': 'fruit', 'kind': 'grape'}, ] var b=a.filter((x,y,z)=>z.slice(0,z.length).filter(w=>w.kind==x.kind).length==1); console.log(b); http://mevius.5ch.net/test/read.cgi/tech/1659855460/41
42: デフォルトの名無しさん (ワッチョイ ad5f-wuTS [106.185.148.64]) [sage] 2022/09/03(土) 02:15:20.35 ID:Wm/0iruN0 >>41 const buckets = a.reduce((buckets, current) => { if (!buckets[current.kind]) { buckets[current.kind] = [current]; } else { buckets[current.kind].push(current); } return buckets; }, {}); const b = Object.values(buckets) .filter((items) => items.length === 1) .flat(); 速度は測ってないけどたぶんO(n^2)→O(n)になって速いはず http://mevius.5ch.net/test/read.cgi/tech/1659855460/42
43: デフォルトの名無しさん (スプッッ Sd03-5GnA [1.75.244.51]) [sage] 2022/09/03(土) 03:34:12.57 ID:E5gjC2rTd Mapで似たようなこと考えてた http://mevius.5ch.net/test/read.cgi/tech/1659855460/43
44: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:05:53.47 ID:RJZpwhgn0 >>41 要素数や重複要素のばらつき具合によって結果は変わるが、最終的には力業が最速な事が多い https://jsfiddle.net/gft5ah0n/ 極端な結果になっているのは重複要素がすぐそばにあり、while文による検索ですぐに見つかる為だ 重複要素が遠い位置にあるなら、while文による検索が遅くなるケースも十分にある >>41のコードが比較的高速なのも重複要素が比較的近くにある為だ Object.valuesやArray#filterによる変換コストが検索コストより高くついているので、他のコードが比較的遅い 重複検知が頻繁に発生するようであれば、データのも持ち方を new Map や new Set を使うように変更した方がいい 配列はユニークな値を得るのに向いていない http://mevius.5ch.net/test/read.cgi/tech/1659855460/44
45: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:08:20.30 ID:RJZpwhgn0 >>44の補足 jsfiddleのconsoleはconsole.time()を実装していないようだ ベンチマーク結果はブラウザのコンソールで確認する必要がある http://mevius.5ch.net/test/read.cgi/tech/1659855460/45
46: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:28:11.32 ID:RJZpwhgn0 すまん >>44のwhile_loopは期待通りに動かないので忘れてほしい(console.assert()のコードをミスって気づかなかった) 重複要素のばらつき具合によるが、(>>41の配列においては)暫定最速は>>41 http://mevius.5ch.net/test/read.cgi/tech/1659855460/46
47: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 10:46:53.92 ID:RJZpwhgn0 >>46 console.assert()の修正、重複チェックをkindのみに修正したら、mapが最速になった https://jsfiddle.net/bw8z2acf/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/47
48: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 11:16:26.73 ID:RJZpwhgn0 >>47 高速化で考えるべきは「ループ回数の削減」と「変換回数の削減」 >>41 source >>42 reduce >>47 map reduceはループ回数は削減されているが、変換回数がsourceよりも多い 要素数6では「変換コスト > 検索コスト」になってしまい、sourceよりも遅い 要素数192では「変換コスト < 検索コスト」となるので、sourceよりも速い mapの変換回数は2回で Array.from() と results.values() のみ ループ回数、変換回数ともにsource,reduceよりも少ない 要素数6、要素数192のいずれも map が最速となる 実際のところ、変換を一度も発生させないコードが理想となる データの持ち方として配列(new Array)であるべきなのか、はよく考えた方がいい http://mevius.5ch.net/test/read.cgi/tech/1659855460/48
49: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/03(土) 11:42:14.57 ID:RJZpwhgn0 >>39 a要素でマークアップされているなら、難しくはない for (let a of document.querySelectorAll('a[href]')) a.target = '_blank'; window.open()などでリンクを開く挙動もJavaScriptで制御しているなら、コードを読んでリンク先を得る手段を考える必要がある http://mevius.5ch.net/test/read.cgi/tech/1659855460/49
50: デフォルトの名無しさん (ワッチョイ 9534-9i1j [14.14.181.44]) [sage] 2022/09/04(日) 09:22:10.61 ID:eAq4eNQY0 >>40 >>49 ありがとうございます。 テーブルの表示となっていて、行全体にリンクが設定されているようです。 以下のような記載が複数並んでおり、通常は左クリックでリンク先に移動しかできず、新しいタブで開くことができません。 <tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”> <td class=”〇〇〇”></td> <td class=”〇〇〇”></td> </tr> 素人ながらいくつかブックマークレットで試したのですが、逆に実行するとリンクが無効になる事が多々でした。 アドバイスをいただければ幸いです。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/50
51: デフォルトの名無しさん (ワッチョイ d510-bEl6 [180.12.82.129]) [] 2022/09/04(日) 12:38:54.82 ID:FoFuUBY00 <div style="width:100%;height:200px;border:Solid 3px #0000ff" id="test"></div> これのcss初期設定を取得したいのでstyle="○○"の○○部分を抽出したいんだけどやり方がわかりません。 element.style.widthみたいに取得すると途中で値を書き換えられると初期設定が得られないので 最初にタグに埋め込んであるものを取得したいんです。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/51
52: デフォルトの名無しさん (ワッチョイ 955f-EB17 [14.8.104.32]) [sage] 2022/09/04(日) 20:07:02.96 ID:KWOOnIlI0 getAttributeとか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/52
53: デフォルトの名無しさん (ワッチョイ 7561-rTOP [222.144.116.143]) [sage] 2022/09/04(日) 20:23:24.42 ID:FTTWPGH/0 element.style.hoge=fugaしたらstyle属性値も連動するんだから 書き換える前に取得しとくしかなくね? http://mevius.5ch.net/test/read.cgi/tech/1659855460/53
54: デフォルトの名無しさん (ワッチョイ 3501-vbgY [126.94.243.226]) [sage] 2022/09/04(日) 21:15:03.99 ID:SMoCQy1h0 >>51 ・直後にscript書いて書き換え前にstyleを取得しておく ・Fetch APIでhtmlをGETしてCSPでscript無効化してparseしてstyleを得る http://mevius.5ch.net/test/read.cgi/tech/1659855460/54
55: デフォルトの名無しさん (ワッチョイ d510-bBdM [180.12.82.129]) [] 2022/09/04(日) 22:38:54.08 ID:FoFuUBY00 >>52-54 ありがとうございました http://mevius.5ch.net/test/read.cgi/tech/1659855460/55
56: デフォルトの名無しさん (ワッチョイ d52c-6nWD [180.52.202.152]) [sage] 2022/09/04(日) 23:03:12.95 ID:9ocqxCfk0 >>50 開発者が、どのフレームワークを使っているのか分からないけど、 例えば、Ruby on Rails, Stimulus を使っているなら、 [Rails]Stimulusを使ってtableの行全体<tr>をリンクにする(jQuery不要) https://zenn.dev/necocoa/articles/rails-stimulus-tr-link これのhref_controller.js に、 export default class extends Controller { toHref(event) { // 既定の動作を取り消す event.preventDefault() // data-href 属性に入っている、URL を取得する const href = event.currentTarget.dataset['href'] // URL を設定する window.location.href = href } } http://mevius.5ch.net/test/read.cgi/tech/1659855460/56
57: 56 (ワッチョイ d52c-6nWD [180.52.202.152]) [sage] 2022/09/04(日) 23:14:48.88 ID:9ocqxCfk0 >>56 // URL を設定する window.location.href = href みたいに直接、window.location.href に設定しているけど、 この場合、Ctrl + クリックや、 右クリックメニューから新しいタブで開くことは出来ないのかな? http://mevius.5ch.net/test/read.cgi/tech/1659855460/57
58: デフォルトの名無しさん (ワッチョイ e3b7-9TNW [211.124.165.35]) [sage] 2022/09/04(日) 23:26:45.19 ID:RdtW7bNN0 >>50 遷移する時にdata-targetが使われることを見込んでこれでいけるかもね for (let tr of document.querySelectorAll('tr.〇〇〇')) tr.dataset.target = '_blank' ※〇〇〇はtrのクラス名で http://mevius.5ch.net/test/read.cgi/tech/1659855460/58
59: デフォルトの名無しさん (JP 0H93-Dk2f [103.163.220.88]) [sage] 2022/09/05(月) 18:27:01.95 ID:XvLqNcU6H document内の要素で、textContentに'xxx'を持つクラスを取得するにはどうしたらいいですか? 全部の要素総当たりでtextContent調べるしかないんでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/59
60: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/05(月) 18:51:10.83 ID:ng2JfbNn0 >>50 JavaScriptコードが不明なので正確な回答は不可能 >>58の想定通りなら、おそらくその実装が一番楽 tr要素ノードにclickイベントハンドラでwindow.openする実装と仮定して、下記実装が考えられる 1. elementdataset.hrefでリンク先アドレスを得る 2. createElementでa要素ノード生成 3. replaceChildで(A)のDOMになるよう調節 4. tr要素ノードの仕掛けられたであろうclickイベントハンドラをevent.stopImmediatePropagation()で封印 (A) <tr class=”〇〇〇” data-href=”★リンク先アドレス★” data-target=”〇〇〇”> <td class=”〇〇〇”><a href=”★リンク先アドレス★”></a></td> <td class=”〇〇〇”><a href=”★リンク先アドレス★”></a></td> </tr> window.open()なんてレガシーコード書きたくないからあえてa要素を使っているが、 イベントを横取りできるなら、既存イベントハンドラと同じコードにしても良い http://mevius.5ch.net/test/read.cgi/tech/1659855460/60
61: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/05(月) 19:18:18.86 ID:ng2JfbNn0 >>59 XPath式を使えば、textContentを使わなくて済む https://jsfiddle.net/kb5e740f/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/61
62: デフォルトの名無しさん (ワッチョイ 3501-bBdM [126.94.243.226]) [sage] 2022/09/05(月) 19:25:28.71 ID:ng2JfbNn0 >>61 テキストノードを子に持つ要素ノードを捕捉するコードにすればよかった https://jsfiddle.net/kb5e740f/1/ http://mevius.5ch.net/test/read.cgi/tech/1659855460/62
63: デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.180.164]) [] 2022/09/07(水) 17:04:03.05 ID:zBxXyTwva プログラミング初心者でJavaScriptを勉強してます。 メンバ変数A、メソッドBを持つクラスがあり、メソッドBの中で変数Aを活用(Aを用いた処理やAの変更)したいのですが、 Aを引数としてBに渡して返り値として受け取るのと、Bの中で直接this.Aと記述して処理するのは何か違いがありますか? メソッドBに別の変数を渡す可能性があるなら前者でないといけないのでしょうが、そうでなければ後者の書き方でよいでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/63
64: デフォルトの名無しさん (ワッチョイ 6501-vbgY [60.85.61.123]) [sage] 2022/09/07(水) 18:23:46.99 ID:LU0OXBc/0 >>63 this.Aは全てのインスタンスメソッドで参照できる this.Aはインスタンスを参照可能なスコープ上で参照可能 仮引数AはメソッドBの関数スコープ外から参照不可能 http://mevius.5ch.net/test/read.cgi/tech/1659855460/64
65: デフォルトの名無しさん (ワッチョイ 232c-HH83 [219.162.239.51]) [sage] 2022/09/07(水) 19:11:15.04 ID:8NMkvrFG0 Ruby で書くと、 initialize は、constructor class A def initialize @x = 0 end def f_1 @x = 1 end def f_2( num ) @x = num end end p a = A.new #<A: @x=0> a.f_1 p a #<A: @x=1> a.f_2( 2 ) p a #<A: @x=2> http://mevius.5ch.net/test/read.cgi/tech/1659855460/65
66: デフォルトの名無しさん (スッップ Sd43-5GnA [49.98.171.228]) [] 2022/09/07(水) 19:17:44.81 ID:GIiuva0od >>64 それ何にも疑問の解決になってないだろう http://mevius.5ch.net/test/read.cgi/tech/1659855460/66
67: デフォルトの名無しさん (ワッチョイ 6501-bBdM [60.85.61.123]) [] 2022/09/07(水) 20:26:24.25 ID:LU0OXBc/0 >>66 ↓のsetAとcalcAの違いを聞いてるんじゃないのか? class Foo { constructor (a) { this.A = a; } setA (a) { this.A = calc(a); } calcA (a) { return calc(a); } } わかっているらしいあなたが回答すれば済む話だが http://mevius.5ch.net/test/read.cgi/tech/1659855460/67
68: デフォルトの名無しさん (ワッチョイ 2b7c-QaXK [113.43.107.134]) [] 2022/09/08(木) 00:18:00.64 ID:rIQlC2lz0 すいません。以下の様な状況でfuncCからfuncBまたはB'が呼ばれる状況を考えていました。B'のほうが楽な気がして。そもそも意味不明な質問だったら申し訳ないです… ``` class Foo{ varA; // varAの値はよそから取得 funcB (a){ //aに対する処理 return a;} funcB' (){ //this.varAに対する処理 } funcC(){ ans = funcB(this.varA); または funcB'(); ans = this.varA; } } http://mevius.5ch.net/test/read.cgi/tech/1659855460/68
69: 65 (ワッチョイ 232c-HH83 [219.162.239.51]) [sage] 2022/09/08(木) 07:17:36.21 ID:eI1uoUaK0 Ruby では、>>65 に書いたように、 def f_1 @x = 1 end みたいに、クラス内のインスタンスメソッド・f_1 内で、 インスタンス変数・@x を使えるので、一々、引数で渡す必要がない http://mevius.5ch.net/test/read.cgi/tech/1659855460/69
70: デフォルトの名無しさん (ワッチョイ 955f-Iguz [14.13.137.64]) [sage] 2022/09/08(木) 19:40:45.35 ID:6QKcdu8L0 オブジェクト指向の一般的な話としては、クラス内の関数であればクラス内のメンバはいじっても問題ないと思う。 ただ、「どこの関数がこのメンバを触ってるのかわからない」ってほどクラスが巨大化するなら、もはやそれはたちの悪いグローバル変数そのものなので設計からおかしい。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/70
71: デフォルトの名無しさん (ワッチョイ 6501-CzlZ [60.85.61.123]) [sage] 2022/09/08(木) 22:51:00.93 ID:D/mmzJCP0 >>68 一つ一つのコードの意味を理解して、一つ一つのコードでなぜをそれを使うのか、と自問して答えを出せば、自ずと答えが出てくる 質問していない部分で突っ込みどころが多すぎて、「何も考えてないんだな」と思わせられる https://jsfiddle.net/qem7cLyf/ ・なぜ 全ての関数は返り値を持たないのか? ・なぜ Foo1#funcB は静的関数ではないのか? ・なぜ Foo1#funcC,Foo2#funcC は返り値ではなく、グローバル変数に演算結果を格納したのか? ・なぜ Foo2#varA の初期化にコンストラクタの引数を使わないのか? こういう質問全てにこたえられるぐらいに考えられないと良いコードはかけない https://jsfiddle.net/s27mxepn/ ・可能な限り、変数のスコープはせまくあるべき ・可能な限り、関数は参照透過性を持つべき 今後、インスタンスプロパティを拡張する予定があるならclassを使うべきだし、そうでないなら静的関数で十分 >>64で示した挙動の違いだけで十分に判断できる http://mevius.5ch.net/test/read.cgi/tech/1659855460/71
72: デフォルトの名無しさん (オッペケ Sr81-3vxq [126.254.237.221]) [sage] 2022/09/08(木) 23:10:43.06 ID:DGEh14TYr それがプログラミング初心者に投げつける言葉かよ・・・ そういう知識や判断力もゆくゆくは必要だけども物事には順序ってもんがあってまだその域ではなかろう マウントが取りたいだけならもっと近いレベルの相手にやんなよ http://mevius.5ch.net/test/read.cgi/tech/1659855460/72
73: デフォルトの名無しさん (テテンテンテン MM4b-HSKh [133.106.60.103]) [sage] 2022/09/08(木) 23:23:08.03 ID:xrpQvLAzM >>63 いいと思うよ というかBに汎用性を持たせるのは微妙 http://mevius.5ch.net/test/read.cgi/tech/1659855460/73
74: デフォルトの名無しさん (アウアウウー Sa69-QaXK [106.129.156.188]) [] 2022/09/09(金) 09:56:50.51 ID:Rq87TVpoa this.Aで書いた方が手っ取り早いことが多い気がしたのですが、そちらでもいいけどスコープに注意しないとバグの要因になる、グローバル変数を濫用しないようにというのと相似形の似たような話という認識でいいでしょうか。 下手したら必然性なく両者を混在させてしまったりしそうなので注意したいと思います。参照透過性とか言葉自体知りませんでした… 参考になりました。ありがとうございます。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/74
75: デフォルトの名無しさん (スップ Sd03-5GnA [1.75.3.22]) [] 2022/09/09(金) 11:06:49.13 ID:hB1+BppPd >>74 今は>>70の理解でいいと思うよ 今の時点であまり詰め込んでもしょうがないし >>71みたいなののせいで萎縮しないでね http://mevius.5ch.net/test/read.cgi/tech/1659855460/75
76: デフォルトの名無しさん (ワッチョイ 6501-CzlZ [60.85.61.123]) [sage] 2022/09/09(金) 19:12:54.25 ID:0zkp1JmC0 >>72 > 物事には順序ってもんがあってまだその域ではなかろう 順序が大切なことには同意 ダメ出しがたくさんあるのは「学習の順序」が間違っているから いろいろと学習を飛ばしてコードを書いており、その質問をする域に達していない 初心者だからこそ、もっと基礎的な課題から取り組むのが現実解だと俺は思う 今までの受け答えを見る限り、付け焼刃で知識をつけているように俺には見える > マウントが取りたいだけならもっと近いレベルの相手にやんなよ マウントを取りたいわけじゃない http://mevius.5ch.net/test/read.cgi/tech/1659855460/76
77: デフォルトの名無しさん (ワッチョイ 232c-HH83 [219.162.235.49]) [sage] 2022/09/09(金) 20:14:57.93 ID:n8dQNxep0 だから、オブジェクト指向とかプログラミングは、Ruby から始めるべき。 JavaScript(JS)みたいなややこしいもので、デザインパターンを学ぶべきではない 改訂2版 Ruby逆引きハンドブック の1冊だけで、かなりのモジュール・ライブラリの使い方も分かる 同じページ数でも、JSなら、文法だけで終わる。 20年以上のJSの歴史を追っかけて行くから、文法だけでもRubyの5倍ぐらいある だから、こういう言語へ手を出したらダメ。 Rubyist は、JSなどをコピペで済ます。 深い所までやらない。分量的に切りがない http://mevius.5ch.net/test/read.cgi/tech/1659855460/77
78: デフォルトの名無しさん (ワッチョイ a95f-pw5f [14.8.104.32]) [sage] 2022/09/10(土) 00:48:49.86 ID:1NdnS3vZ0 学習の順序とか提示せずに「何も考えてない」と切り捨てるのはマウンティングに入らないんですか? http://mevius.5ch.net/test/read.cgi/tech/1659855460/78
79: デフォルトの名無しさん (ワッチョイ 1901-T2pD [60.85.61.123]) [sage] 2022/09/10(土) 06:13:53.00 ID:Cpvx7Vnj0 回答者相手にマウントとってる人に真面目に答えるだけ無駄か そんな暇があったら、質問者に回答すればいいのに http://mevius.5ch.net/test/read.cgi/tech/1659855460/79
80: デフォルトの名無しさん (オッペケ Src5-qUKH [126.254.242.25]) [sage] 2022/09/10(土) 09:58:22.29 ID:aLnVTfHzr 君は高圧的な正しさで初心者を殴ってるだけ 人にものを教えるのには向いてないと思うよ http://mevius.5ch.net/test/read.cgi/tech/1659855460/80
81: デフォルトの名無しさん (ワッチョイ 1901-V+uT [60.85.61.123]) [sage] 2022/09/10(土) 11:01:57.14 ID:Cpvx7Vnj0 >>80 5chはそういうものと思っていたが、それがこのスレの流儀なら気を付ける だが、回答者に高圧的だったり、回答者にマウントをとる人も是正されるような公平な世界であってほしいね http://mevius.5ch.net/test/read.cgi/tech/1659855460/81
82: デフォルトの名無しさん (オッペケ Src5-qUKH [126.254.179.217]) [sage] 2022/09/10(土) 11:48:27.08 ID:DabBJhVCr 具体的にどの発言に対して言ってるのかわからんけど そういう何か言い返さないと気がすまないって気持ちは心の中にしまっておいた方がいいんじゃないかな http://mevius.5ch.net/test/read.cgi/tech/1659855460/82
83: デフォルトの名無しさん (スップ Sd33-A6fq [49.97.111.223]) [sage] 2022/09/10(土) 13:25:36.79 ID:JRksiUpNd 自分の過ちを認めると負けたみたいでプライドが傷つくから 俺も悪かったけどお前らも悪いから引き分けだよねということにしたい心理の表れ http://mevius.5ch.net/test/read.cgi/tech/1659855460/83
84: デフォルトの名無しさん (ワッチョイ 6910-Vaw7 [180.12.82.129]) [] 2022/09/11(日) 20:15:23.24 ID:yDUj5jeF0 元の配列を関数内で空にしたいけどうまくいきません 100と表示されてしまったので空になっていませんでした。 配列は参照渡しなので元の配列も書き換えられると思ったんだけど どうやれば関数内で元の配列を空にできますか?returnは使いたくないです。 let a_list = [100,200,300]; test(a_list); function test(b_list){ b_list = []; } alert(a_list[0]) http://mevius.5ch.net/test/read.cgi/tech/1659855460/84
85: デフォルトの名無しさん (ワッチョイ 818b-pqEy [210.228.102.1]) [sage] 2022/09/11(日) 20:29:51.41 ID:bqV48/aB0 >>84 function test(b_list) { b_list.length = 0 } http://mevius.5ch.net/test/read.cgi/tech/1659855460/85
86: デフォルトの名無しさん (ワッチョイ 6910-V+uT [180.12.82.129]) [] 2022/09/11(日) 21:06:49.62 ID:yDUj5jeF0 >>85 できました ありがとうございます http://mevius.5ch.net/test/read.cgi/tech/1659855460/86
87: デフォルトの名無しさん (オッペケ Src5-yIeJ [126.205.215.107]) [] 2022/09/12(月) 09:29:51.85 ID:ptOOOLgwr b_list = []; が何故ダメかというとb_listを空にしてるんじゃなくて b_listに新しい配列を代入してるだけだから ということは覚えておこう http://mevius.5ch.net/test/read.cgi/tech/1659855460/87
88: デフォルトの名無しさん (ワッチョイ 6dbd-fO9i [122.133.74.218]) [sage] 2022/09/23(金) 01:20:03.32 ID:93J4lVSi0 ブラウザで動かすとき、グローバルスコープでの demo って名前は何かある? この名前の関数作ってボタンの onclick から呼び出そうとしたら関数未定義のエラーになる。 別の名前にすると呼び出せる。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/88
89: デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.97.207]) [sage] 2022/09/23(金) 09:32:58.81 ID:CDwP7FtJd タイポかスコープの勘違いとかじゃないの? コンソールでdemo関数定義して実行したら普通に動いたけど http://mevius.5ch.net/test/read.cgi/tech/1659855460/89
90: デフォルトの名無しさん (ワッチョイ 9501-Zrsu [126.242.174.70]) [sage] 2022/09/23(金) 10:32:57.61 ID:UxdKoKVd0 >>88 再現可能なコードを出してみたら? https://ja.stackoverflow.com/help/minimal-reproducible-example http://mevius.5ch.net/test/read.cgi/tech/1659855460/90
91: デフォルトの名無しさん (ワッチョイ 23bd-fO9i [125.194.52.138]) [sage] 2022/09/23(金) 15:04:58.71 ID:i+SKzCkA0 >>90 こんな感じだけど、ちょっと分かってきた。 全体貼ろうとしたらセキュリティチェックかなにかに引っ掛かって書けないから、scriptタグの中身と body の中身だけ。 function demo() { alert('DEMO'); } <form> <input type="button" name="demo" value="DEMO" onclick="demo()"> </form> この onclick にとっての demo は多分 form内の input要素の demo になるんだね。 スコープがこの form になると。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/91
92: デフォルトの名無しさん (ワッチョイ 23bd-fO9i [125.194.52.138]) [sage] 2022/09/23(金) 15:06:34.97 ID:i+SKzCkA0 エラーは未定義関数じゃなく、demo is not a function だった。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/92
93: デフォルトの名無しさん (スップ Sd43-Kpwt [49.97.96.176]) [sage] 2022/09/23(金) 17:05:20.97 ID:bbK6e07Hd thisとthis.formがスコープに入る仕様だそうな https://qiita.com/hakatashi/items/40fbedf61a3dd79f21fc 有効に使う機会よりも謎の挙動にどハマりするケースの方が多そう http://mevius.5ch.net/test/read.cgi/tech/1659855460/93
94: デフォルトの名無しさん (ワッチョイ 9501-Zrsu [126.242.174.70]) [sage] 2022/09/23(金) 18:38:15.96 ID:UxdKoKVd0 >>91 window.demoかaddEventListenerを使ってみては? 後者がベター http://mevius.5ch.net/test/read.cgi/tech/1659855460/94
95: デフォルトの名無しさん (ワッチョイ bf01-4MOF [126.242.174.70]) [sage] 2022/09/25(日) 08:59:26.24 ID:oCqDdJBP0 回答もらった途端にいなくなる質問者多いな http://mevius.5ch.net/test/read.cgi/tech/1659855460/95
96: デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]]) [sage] 2022/09/25(日) 17:53:11.47 ID:hlHjM9NA0 こんにちは ブラウザから、ローカルのファイル(画像など)を「関連付けされたソフトで開く」というのはできますか? HTMLの<a href=#></a>だと、ブラウザ(Chrome)内で開いてしまいますが、これを別の画像ビューアで開きたいです http://mevius.5ch.net/test/read.cgi/tech/1659855460/96
97: デフォルトの名無しさん (ワッチョイ bf01-4MOF [126.242.174.70]) [sage] 2022/09/25(日) 20:26:11.45 ID:oCqDdJBP0 >>96 参考情報 https://akaki.io/2021/url_scheme_hijack http://mevius.5ch.net/test/read.cgi/tech/1659855460/97
98: デフォルトの名無しさん (ワッチョイ 2b5f-JEaq [106.73.71.2 [上級国民]]) [sage] 2022/09/26(月) 17:57:53.84 ID:E/HZ+YPY0 ありがとうございます 「カスタムURLスキーム」を調べてやったみましたが、ローカルのファイルを指定ができません(画像ビューアは開くがファイルが開かない) JavaScriptの質問ではないので恐縮ですが、どうやって指定できますかね? https://qiita.com/kojimadev/items/74100c8557a92939ef69 例えば上のサイトを参考に、画像ビューアをhogeでレジストリ登録して下のようにすると、画像ビューアだけ起動してファイルは見つからなかったと出ます(hoge:file:///C:...などもダメ) <a href="hoge:C:/tmp/sample.jpg"></a> http://mevius.5ch.net/test/read.cgi/tech/1659855460/98
99: デフォルトの名無しさん (ワッチョイ e27c-bwfb [221.241.223.58]) [sage] 2022/09/26(月) 22:44:18.29 ID:Xyg4q6vF0 >>98 違ってるかもだけど、Windowsだったらパスの区切り文字は/じゃなくて\または¥じゃないのかな で、\は制御文字として扱われるからエスケープして\\にしないとダメとか http://mevius.5ch.net/test/read.cgi/tech/1659855460/99
100: デフォルトの名無しさん (ワッチョイ a2bd-ZJWq [125.198.8.233]) [sage] 2022/09/26(月) 23:02:16.56 ID:adbpU9F00 >>98 アプリの方もURLスキームでの起動に対応してないとだめなんじゃない? URLスキームはその URLの書式をアプリ独自に決めてあって、アプリはその書式でアクションや対象を判別して動作するように作られてるんだと思う。 とりあえず与えられた引数が分かるテストアプリを見繕って hoge として登録してみたら何か分かるかもよ。 http://mevius.5ch.net/test/read.cgi/tech/1659855460/100
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 902 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.016s