2ch勢いランキング アーカイブ

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


Name_Not_Found [sage] 2019/09/16(月) 17:22:37.92ID:???
JavaScript を自ら学ぶ人のための質問スレッドです。
次スレはが(本スレで改善案があれば考慮して)立ててください

■規則/推奨ルール
質問者は !slip:vvvvv を名前欄に、その後は「レス番」+!slip:vvvvv
・質問内容は具体的に。言葉だけでなく、出来る限り再現性を確認したサンプルコードの掲示。
・質問テンプレートの利用推奨。
・質問への「答え」から解離した議論はよそでやること。
■禁止行為
・丸投げ質問
・迷惑スクリプトの質問
・オレオレ用語の使用(一般的な用語を使用する事)
・煽り、批判等の他人を不快にさせる行為
■質問テンプレート
【環境】OS, ブラウザをバージョンと共に記入してください。
【条件】期待する回答の条件を書いてください。
【何をしたのか】何をしたら問題の現象が発生するのか。再現手順を具体的に書いてください。
【エラーメッセージ】エラーメッセージがあれば正確に書き写してください。
【期待する結果】最終的にどういう結果を望んでいるのか、を書いてください。
【サンプルコード】現象を再現可能な最小限のコードを書いてください。
 1レスに収まらないならコード投稿サイトを利用してください。
 ttp://http://jsdo.it/ ttp://http://jsbin.com/ ttp://http://jsfiddle.net/ ttp://http://ideone.com/
■回答者へ
・回答には多様性があります。他人の回答を尊重してください
・動作ブラウザや環境が限られる場合は、それを明記してください
・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
・質問者がJavaScriptでなければ実現できないと勘違いしてるなら、その否定としてHTMLとCSSで実装しても良い
・他人の回答を見たくないのであれば、文句をつける代わりにNGにして見えないようにしてください。文句をつける=荒らしです

■前スレ
+ JavaScript の質問用スレッド vol.141 +
ttps://mevius.5ch.net/test/read.cgi/hp/1562318008/
Name_Not_Found [sage] 2019/09/16(月) 17:23:02.24ID:???
■FAQ

◆開発者ツール(Developer Tools)の基本的な使い方
 ▼諸注意
  - 本説明では Google Chrome の開発者ツールの名称に従います。他ブラウザで使う場合は適宜読み替えて下さい。
  - Edge- でコンソールを使うには予め開発者ツールを起動しておく必要があります(開発者ツールを起動しないと console.log() が機能しません)
  - Safari はデフォルトで開発者ツールが無効な為、有効に設定する必要があります。
  ttp://https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/GettingStarted/GettingStarted.html
 ▼要素を検証
 1. ページ上で右クリックして [要素を検証]
 2. [Elements] パネルが開き、対象のDOMノードが選択される(選択対象が目的の要素でなければ [Elements] パネル上で選択し直す)
 3. 右側のサイドバーから知りたいステータス名のタブを選択する
   - [Styles] タブ … CSSプロパティの指定値を表示 (※カスケードによって上書きされたプロパティは取り消し線で表示される)
   - [Computed] タブ … CSSプロパティの算出値を表示("font-size: 1em" を指定していても算出後の "*px" で表示される)
   - [Properties] タブ … 選択したDOMノードのプロパティを表示
 ▼コンソール
 1. JavaScript コード上で console.log('Hello, World!'); と入力
 2. [Ctrl] + [Shift] + [I] キー(IE は [F12])で開発者ツールを開き、[Console] パネルを開く
 3. [Console] パネルに "Hello, World!" と表示される
 (※window.alert() は String 型に変換されますが、console.log() は Object 型の中身をそのまま表示してくれます。)
Name_Not_Found [sage] 2019/09/16(月) 17:23:21.23ID:???
■各種仕様 (続き)
◆ Document Object Model (DOM) / CSS Object Model (CSSOM)
ttp://http://www.hcn.zaq.ne.jp/___/WEB/DOM4-ja.html (DOM Standard (DOM4) 和訳)
ttp://http://www.w3.org/TR/DOM-Level-3-Events/ (DOM3 Events)
ttp://http://www.w3.org/TR/uievents/ (UI Events)
ttp://http://www.hcn.zaq.ne.jp/___/WEB/cssom-ja.html (CSSOM 和訳)
ttp://http://www.hcn.zaq.ne.jp/___/WEB/cssom-view-ja.html (CSSOM View Module 和訳)
◆ その他のWeb関連仕様
ttp://http://domparsing.spec.whatwg.org/ (DOM Parsing and Serialization - innerHTML等)
ttp://http://www.hcn.zaq.ne.jp/___/WEB/XHR-ja.html (XMLHttpRequest 和訳)
ttp://http://www.hcn.zaq.ne.jp/___/WEB/File_API-ja.html (File API 和訳)
ttp://http://www.whatwg.org/specs/ (WHATWGの仕様一覧)
◆ MDN (Netscape/Mozilla)
ttp://https://developer.mozilla.org/ja/docs
◆ MSDN Library
ttp://https://msdn.microsoft.com/en-us/library/ie/hh828809 (Internet Explorer API)
ttp://http://msdn.microsoft.com/ja-jp/library/yek4tbz0.aspx (JavaScript)
ttp://http://msdn.microsoft.com/ja-jp/library/cc427807.aspx (JScript)
ttp://http://msdn.microsoft.com/ja-jp/library/cc409712.aspx (DHTML)
◆ JavaScript Garden (ja)
ttp://http://bonsaiden.github.com/JavaScript-Garden/ja/
◆ JSON (JavaScript Object Notation)
ttp://http://www.json.org/json-ja.html

■テンプレ案
ttp://http://fiddle.jshell.net/fH4cC/180/show/light/

■FAQ
ttp://http://fiddle.jshell.net/vSqKr/44/show/light/
Name_Not_Found [sage] 2019/09/16(月) 17:23:46.37ID:???
■参考URL
ダウンロード、CDN
ttp://http://jquery.com/download/
ブラウザサポート
ttp://http://jquery.com/browser-support/
jQuery UI
ttp://http://jqueryui.com/
jQuery UI ダウンロ−ド
ttp://http://jqueryui.com/download/
リファレンス等
ttp://http://alphasis.info/
ttp://http://www.jquerystudy.info/
ttp://http://js.studio-kingdom.com/
【翻訳まとめ】jQuery 3.0 アップグレードガイド - Qiita
ttp://http://qiita.com/fmy/items/345a264a1cf2e2a73f62
Name_Not_Found [sage] 2019/09/16(月) 17:24:02.04ID:???
■FAQ(続き)
◆JavaScriptの実行速度
JavaScriptの速度は「ブラウザ名」「ブラウザのバージョン」「PCスペック」に依存します(ブラウザのバージョン毎に最適化具合が異なります)。
速度の疑問解消の為に ttp://http://jsperf.com/ (githubのアカウントが必要です)にコードをUPしてブラウザ毎に速度計測する事を推奨します。

例外として、仕様における理論上の速度が明確になっている場合があります。
例えば、正規表現によるマッチング処理を考えた場合、「RegExp#test > RegExp#exec > String#match」は ES5 仕様で保証(要出典)されています。
ES5 仕様において RegExp#test が最も処理数が少なく、String#match が最も処理数が多いことが明確だからです。
ブラウザによっては RegExp#test の最適化が十分でなく、String#match の最適化が RegExp#test より十分であれば逆転する可能性はありますが、各メソッドの最適化が一律であればこの前提が崩れる事はありません。

■各種仕様
◆ Standard ECMA-262
ttp://http://bclary.com/2004/11/07/ (ECMAScript 3 HTML版)
ttp://http://www2u.biglobe.ne.jp/~oz-07ams/2002/ecma262r3/ (ECMAScript 3 和訳)
ttp://http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
ttp://http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
ttp://http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 6 / ECMAScript 2015)
ttp://http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
ttp://http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
◆ HTML Standard (HTML5)
ttp://http://www.whatwg.org/specs/web-apps/current-work/multipage/
ttp://http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
ttp://http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)
Name_Not_Found [sage] 2019/09/16(月) 17:24:20.07ID:???
■JavaScript主要ライブラリ・フレームワーク

jQuery
ttp://http://jquery.com/
jQuery UI
ttp://http://jqueryui.com/
jQuery Mobile
ttp://http://jquerymobile.com/
Lo-Dash
ttp://https://lodash.com/
Backbone.js
ttp://http://backbonejs.org/
Underscore.js
ttp://http://underscorejs.org/
AngularJS
ttp://https://angularjs.org/
Knockoutjs
ttp://http://knockoutjs.com/
RequireJS
ttp://http://requirejs.org/
D3.js
ttp://http://d3js.org/
threejs
ttp://http://threejs.org/
Name_Not_Found [sage] 2019/09/16(月) 17:24:38.14ID:???
Q. jQueryはどのバージョンを使えばいいのですか?
A. IE9以上であれば、jQuery 3.0を使用してください。
IE8以下にも対応するならば、jQuery 1.12を使用してください。

補足

jQuery 1.9 までは一系統しかなく、古いブラウザも含めて全て対応していました。
その後、古いブラウザを切り捨てるためにバージョンを分岐させました。
古いブラウザにも対応した1系(1.10、1.11、12)と
古いブラウザを切り捨てた2系(2.0, 2.1, 2.2)です。

1系と2系は対応ブラウザの違いだけで機能は全く一緒です。
機能が同じなのにメジャーバージョンが違っているのが分かりにくい
ということでバージョン番号の付け方を変えることになり、
新たに古いブラウザを切り捨てたjQuery 3.0、そして古いブラウザにも対応した
jQuery Compat 3.0がリリースされる予定でした。

しかしマイクロソフトが古いIEのサポートポリシーを変更し
サポート中であるOSで動く、最新のIEしかサポートしなくなったために、
2016年1月でVista上のIE8のサポートが終了しました。

そのため予定されていたjQuery Compat 3.0がなくなり、
jQueryは3.0に一本化されました。
Name_Not_Found [sage] 2019/09/16(月) 17:24:58.78ID:???
■JavaScript主要ライブラリ・フレームワーク 利用率
ttp://https://w3techs.com/technologies/overview/javascript_library/all

■質問を書く上で
(1) 煽り、コード制作依頼等、人を不快にさせる投稿はご遠慮下さい。公序良俗を守った応対を心がけてください。
(2) 他の人に迷惑をかけるスクリプトの質問はご遠慮ください。
  (ブラクラ、[戻る], [閉じる], [クリック] の妨害、画面占有など)
(3) 質問者及び議論を行う人はメール欄を空欄にし、名前にレス番を入れることを強く推奨します。回答者はなりすましを判断できませんので、なりすましが現れても自己責任となります。
(4) 常に自発的に調べる心構えを持ってください。
  具体的には「自分で調べてから質問する」「回答をもらってわからない単語があればGoogle検索してみる」など。
  わからない内容を代わりに調べてくれる回答者をお望みの方は余所で質問してください。
(5) 出来るだけ一般的な用語を使用してください。脳内オレオレ用語は混乱の元です。
(6) 出来るだけサンプルコードを掲示してください。言葉による説明は行き違いが生まれる場合があります。
  ※必ず「問題の事象が再現されること」を確認してください。
   必要な部分だけ切り出したつもりで現象が再現できていなかったケアレスミスがしばしば見られます。
(7) サンプルコードに HTML が含まれる場合は ttp://http://validator.w3.org/ で [Check] してみてください。
(8) 質問を具体的かつ詳細に書くと回答を得られやすいです。の質問テンプレートを活用してみてください。
(9) 時にはあなたが望む「答え」だけでなく、「意見」などが寄せられる場合もあります。
Name_Not_Found [sage] 2019/09/16(月) 17:25:15.74ID:???
■各種仕様
◆ Standard ECMA-262
ttp://http://www.ecma-international.org/ecma-262/6.0/ (ECMAScript 2015, いわゆる ES6)
ttp://https://www.ecma-international.org/ecma-262/9.0/ (ECMAScript 2018)
ttp://https://tc39.es/ecma262/ (ECMA-262 最新ドラフト)
◆ HTML Standard (HTML5)
ttp://http://www.whatwg.org/specs/web-apps/current-work/multipage/
ttp://http://momdo.s35.xrea.com/web-html-test/spec/WD-html51-20130528/Overview.html (HTML5.1 部分訳)
ttp://http://www.hcn.zaq.ne.jp/___/WEB/WebStorage-ja.html (Web Storage 和訳)

削るべきか要審議
ttp://http://www.ecma-international.org/ecma-262/5.1/ (ECMAScript 5.1 HTML版)
ttp://http://tsofthome.appspot.com/ecmascript.html (ECMAScript 5.1 和訳)
ttp://http://kangax.github.io/compat-table/es5/ (ECMAScript 5 compatibility table)
ttp://http://kangax.github.io/compat-table/es6/ (ECMAScript 6 compatibility table)
Name_Not_Found [sage] 2019/09/17(火) 17:48:16.02ID:???
おつ
Name_Not_Found [] 2019/09/17(火) 18:16:05.96:6M0Yb/TY
document.onkeydown = function(e)
というのは何らかのキーが押されたという状態らしいですが、function eってなんですか
なんのキーか取得するための関数?ですか?
Name_Not_Found [sage] 2019/09/17(火) 18:22:56.08ID:???

ttp://https://developer.mozilla.org/ja/docs/Web/API/Document_Object_Model/Events
Name_Not_Found [] 2019/09/18(水) 06:45:14.37:g+JaSnlc
なんでatomにはろくなアドオンがないのですか?
Name_Not_Found [] 2019/09/18(水) 06:54:54.62:g+JaSnlc
ゲーム作成は基本のテトリスがいいですか
Name_Not_Found [sage] 2019/09/19(木) 13:40:01.50ID:???

ちんぽを出せ
そしてこの板にUPしろ
それがjsニンジャになる一番の近道だ
Name_Not_Found [sage] 2019/09/19(木) 22:38:18.85ID:???
performance.mark(name)ってnameに同じ名前を入れてもいいらしいけど、それって
どういう風に使うものなのかな?
時間を測定するのにmeasure()を使うなら区別できる名前にしておかないとならないし。
Name_Not_Found [sage] 2019/09/21(土) 18:33:46.70ID:???
measureを使うならそうかも知れないが
同じ場所で呼ばれたのに毎回違う名前付けるほうがおかしいだろ
Name_Not_Found [sage] 2019/09/21(土) 20:12:12.13ID:???
逆で、違う場所で同じ名前を使えるのがなんでかなと。

ttp://https://developer.mozilla.org/ja/docs/Web/API/Performance/getEntries
ここにそういう例があるんだけどcheck_PerformanceEntryの中身がなくてよくわからない。
measure()しないとdurationは入ってこないと思うんだけど、どうやっているんだか。
Name_Not_Found [sage] 2019/09/22(日) 20:29:06.00ID:???
なんで違う場所で同じ名前を使えなくする必要があるんだ?
プログラミング言語を何だと思ってるんだ?
Name_Not_Found [sage] 2019/09/22(日) 20:46:43.64ID:???
>なんで違う場所で同じ名前を使えなくする必要があるんだ?

どこをどう読んだらそんな解釈になるんだか。
Name_Not_Found [sage] 2019/09/22(日) 21:54:13.34ID:???
違う場所で同じ名前を使えなくする必要性を感じてないのに
違う場所で同じ名前を使えることに疑問を抱くわけ無いだろ

それともおかしいとも思わない森羅万象に対して一々疑問に思って人に聞く迷惑な奴なのか?
Name_Not_Found [sage] 2019/09/22(日) 22:05:36.94ID:???
「使えなくする必要性」なんてどこから出てきたんだか。
measure()を使うなら各mark(name)のnameを変えなきゃならんってだけだよ。
Name_Not_Found [sage] 2019/09/22(日) 22:44:57.69ID:???
こういう10文字分くらいしかワーキングメモリ持ってない奴と話し合いをすることは不可能
Name_Not_Found [sage] 2019/09/22(日) 22:48:38.50ID:???
durationなんて自分で計算すればいいじゃん
Name_Not_Found [sage] 2019/09/22(日) 22:54:44.83ID:???
とても話し合いしようとしていたようには見えんが?
Name_Not_Found [sage] 2019/09/25(水) 09:33:47.98ID:???
タッチイベントをタッチした瞬間出来るだけ素早く反応させるのはどのような方法をとればいいのでしょうか?
音楽関係のアプリのためラグをなくしたいのですがどうも少し反応が遅れます
少し調べた結果ダブルタップの判定のための遅れ?なのかも?とは思いますが
他にも何かありましたらお願いいたします

HTML
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, user-scalable=no">
<audio id = "bass_drum_sound" src="sound/bassdrum/Kick10.wav" preload="auto"></audio>
<div id = "bass_drum"">
<p>バスドラム</p>
</div>

CSS
#bass_drum{
position: absolute;
top: 55%;
left: 30%;
height: 35%;
width: 35%;
text-align: center;
background: rgb(212, 212, 212);
border-radius: 50%;
border: solid black;
}

javascript
var touchPannel = document.getElementById("bass_drum");
function touch(){
bass_drum_sound.currentTime = 0;
document.getElementById("bass_drum_sound").play() ;
}
touchPannel.addEventListener("touchstart",touch);
Name_Not_Found [sage] 2019/09/25(水) 13:39:34.19ID:???
touchstartイベントが何度も起きてそのたびにcurrentTimeが再設定されてる可能性
そもそもKick10.wavの音の最初に無音期間がある可能性
Name_Not_Found [sage] 2019/09/25(水) 15:46:22.34ID:???

currentTimeは連打に対応するためにつけてます
一番早そう?だけどどうなんだろ?
無音時間は無いはずですが一番大きい音からスタートとかは調整できるかも?
でも音質考えるとなあ
音ゲーとかどうしてるんだろ?
Name_Not_Found [sage] 2019/09/25(水) 18:05:35.90ID:???
とにかくタップと再生のどっちで問題起きてるかが分かりにくいので
タップで別の反応(何かの色変えたり文字)が出るようにして問題の切り分けを行ったほうが良い
音ゲー作りたいなら同時再生数を増やさないと話にならない
Name_Not_Found [sage] 2019/09/25(水) 20:33:07.16ID:???
How to select empty inputs (value=“”) using jQuery
ttp://https://stackoverflow.com/questions/10651349/how-to-select-empty-inputs-value-using-jquery

ここにjqueryでは[value=""]というフィルタを使えないと書いています
valueの初期値で判断するから、という理由のようですが
何故valueの初期値で判断するのかが分かりません
どういう理由からそうなるのでしょうか?
Name_Not_Found [sage] 2019/09/25(水) 20:55:00.17ID:???
セレクタは属性値しか見ない
inputタグは後からvalueを変更しようが属性値のvalueが変わることはない
なので入力したかどうかのチェックに[value=""]は使えない
Name_Not_Found [sage] 2019/09/25(水) 21:08:35.31ID:???

なるほど
値を変えても、ソースリストが変わるわけではないみたいなことですね
ありがとうございました
Name_Not_Found [sage] 2019/09/25(水) 21:12:12.52ID:???

jQueryではなくDOMの仕様

<input value="test">

input[value="test"] {
color: red;
}

これはページを表示した時に赤くなるが、intputの中もを変更しても色は変わらない
JavaScriptでvalueを変えても同様。valueの値は属性に反映されない。
Name_Not_Found [sage] 2019/09/26(木) 07:35:21.67ID:???
vueのプロジェクトでtypescriptを利用する場合、コンポーネントの定義をクラスベースな記述ができるくらいのイメージでいいのかな?

typescriptをサポートしているって例でボタンをつくったりとかまでは見かけるけどそれ以上突っ込んだ例が少ないので
ドキュメントを読み解くときそこだけ読み替える感じでいける?
Name_Not_Found [sage] 2019/09/26(木) 11:35:27.33ID:???
DOM操作をした直後にprompt命令を実行すると、
DOM操作が反映される前にその後のpromptが実行されてしまうのですが、
これをDOM操作を確実に反映させて(強制再描画させて)からpromptが実行されるようにする簡単な方法ってないでしょうか?
Name_Not_Found [sage] 2019/09/26(木) 11:36:39.30ID:???

実例は?
Name_Not_Found [sage] 2019/09/26(木) 11:55:28.44ID:???
例えばこういう感じです。1行目が反映されるのが2行目が帰ってきたあとになるんですよね。
element.style.なんたら=かんたら;
var ok=prompt("これでいいですか?");
Name_Not_Found [sage] 2019/09/26(木) 11:57:46.30ID:???

補足
2行目だけ実行されればいいというものではなくて、2行目以降も色々と処理があってそれは1行目の後であってほしいのです。
だから2行目以降全体をsetTimeoutでくくるとかはできれば避けたいです
Name_Not_Found [sage] 2019/09/26(木) 13:36:23.39ID:???
MutationObserver
Name_Not_Found [sage] 2019/09/26(木) 13:42:55.27ID:???
避けたいとかわがまま言うなら無理だ
Name_Not_Found [sage] 2019/09/26(木) 13:43:08.13ID:???
chrome/safariだと古くからあるダイアログは描画保留中のを処理せずに表示しちゃうのか
setTimeout等で一旦ブラウザ側に表示する隙を与えてやるか
今時なやり方はprompt使わずに自前で表示するかかなぁ
Name_Not_Found [sage] 2019/09/26(木) 21:48:07.85ID:???
くくりたくないってのならどっちにしろ非同期しか無くね?
async function a() {
 element.style.なんたら=かんたら;
 await new Promise((res,rej)=>requestAnimationFrame(()=>setTimeout(res,0)));
 var ok = prompt("これでいいですか?");
}
a();
Name_Not_Found [sage] 2019/09/27(金) 07:05:46.89ID:???
そもそもpromptやalertで一時停止する義務もない中そんな細かい挙動の担保はできない
おとなしくdialog要素使え
Name_Not_Found [] 2019/09/28(土) 17:19:32.45:Gb8piFFd
iframeがクリックされた時に、
どのiframeがクリックされたか表示する方法はありますか?

$("iframe").contents().find("body").on("click", function(){
// alert( $(this).attr('id') );では無理
});

jQueryを使うとこんな感じでiframe内のクリックを実行することはできるのですが、
複数iframeがある状態で、「どのiframeか?」というのを知りたいので、
iframeタグのIDが取得したいです。
Name_Not_Found [sage] 2019/09/28(土) 18:06:31.26ID:???

ttp://https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement/contentDocument
Name_Not_Found [] 2019/09/28(土) 18:41:08.69:Gb8piFFd

これはiframe内のドキュメントを取得・操作するためのもので、
親要素(iframeそのもの)を取得するのと違うのではないでしょうか?
44 [sage] 2019/09/28(土) 18:47:24.21ID:???
情報不足だと思うのでもう少し書きます。

HTML部分が
<iframe id="iframe01" src="test.01html"></iframe>
<iframe id="iframe02" src="test02.html"></iframe>

みたいになっているとします。
に書いたようにiframe内をクリックすると
どのiframeをクリックしたかidが取得できればと思います。

対象のiframeがどれかわかれば、srcを変更して
違うhtmlを読み込んだり出来ると思いまして。
Name_Not_Found [sage] 2019/09/28(土) 18:59:21.55ID:???

そこのthisはiframe内のbodyだし
iframe内から外を得る方法は無いはずだからこんな感じ?
$("iframe").each(function(idx, elem) {
$(elem).contents().find("body").on("click", function(ev) {
alert($(elem).attr("id"));
});
});
Name_Not_Found [sage] 2019/09/28(土) 19:27:52.83ID:???

ほらよ

ttp://https://jsfiddle.net/v9586xo0/

<iframe name="iframe01"></iframe>
<iframe name="iframe02"></iframe>

$("iframe").contents().on("click", function(){
 alert(this.defaultView.name);
});
49 [sage] 2019/09/28(土) 19:32:23.64ID:???
一応言っておくとフレームをまたがってjQueryでイベントをハンドルすると
よくわからん挙動をしたことがあるので、あまりおすすめしないがな。

イベントの通知は、iframeの中から、親windowの関数を呼び出して
通知するほうが安全だと思うけど、まあ今は解決してるかもしれんし
動くなら別にいいけど
Name_Not_Found [sage] 2019/09/28(土) 19:40:35.33ID:???

「document.addEventListenerして、documentで判定しろ」というアドバイス
ownerDocumentをとってもいいけど、documentそのものにclick定義する方が手っ取り早い
Name_Not_Found [sage] 2019/09/28(土) 19:46:01.47ID:???

.contents() が返すのがdocument
だからお前のアドバイスは(内部で)既にやってる
Name_Not_Found [sage] 2019/09/28(土) 19:50:20.50ID:???

「documentで判定」してない
Name_Not_Found [sage] 2019/09/28(土) 20:12:08.19ID:???
documentがユニーク、という事実に質問者もも気がついてないのだろう
Name_Not_Found [sage] 2019/09/28(土) 20:23:58.05ID:???

めんどくせーやつだな
> 「どのiframeか?」というのを知りたいので、
って書いてあるだろ。

理由も追記してる
> 対象のiframeがどれかわかれば、srcを変更して
> 違うhtmlを読み込んだり出来ると思いまして。

最初に書いてあるとおり「どのiframeか?」を知りたいのに、
document(jQueryで言えばcontents().onの中のthis)で判定しろと言われても
判定した所で、iframeにはたどり着かないだろ。

その(iframeの中のdocumentから)iframeにたどり着く方法を聞いているというのに

俺はわかるが、あんたに答えるチャンスをやろう。
Name_Not_Found [sage] 2019/09/28(土) 20:27:14.62ID:???

君イエローカード
対話する気があるのなら言葉に気をつけろ
次やったら退場ね
このスレの全員で君を無視するから
Name_Not_Found [sage] 2019/09/28(土) 20:28:01.86ID:???

良いから質問に答えろ
Name_Not_Found [sage] 2019/09/28(土) 20:28:27.22ID:???

お前はレッドカード(笑)
このスレの全員で君を無視することになった
Name_Not_Found [sage] 2019/09/28(土) 20:31:57.32ID:???

お前はブラックだな。トリアージ的にw
Name_Not_Found [sage] 2019/09/28(土) 20:35:31.24ID:???

めんどくせーのはお前だよ
iframeとdocumentの関連付けが出来たんだから、documentからiframeを追えないわけがないでしょ
Name_Not_Found [sage] 2019/09/28(土) 20:38:33.78ID:???

だから、俺も追えるって言ってる。
質問者が聞いてるのは、追う方法であって、
「追えますか」→「追える」という答えは聞いていない。
Name_Not_Found [sage] 2019/09/28(土) 20:39:26.42ID:???
, ,
キタキタ
人の発言をパクることしかできない無能
がっつり釣られましたとさ
Name_Not_Found [sage] 2019/09/28(土) 20:40:42.00ID:???

勝手に質問者の代弁してるんじゃねーよ
お前の勝手な考え・思いを他人に押し付けるな
何様のつもりだよ
Name_Not_Found [sage] 2019/09/28(土) 20:43:04.34ID:???
例えば、これはiframeのnameがわかるから
$("iframe").contents().on("click", function(){
 alert(this.defaultView.name);
});


これで追えるわけ
$("[name=" + this.defaultView.name + "]")


でもdocumentがわかったとしても、↓のようなやり方でiframeを追うことは出来ない。
$(document)
Name_Not_Found [sage] 2019/09/28(土) 20:44:40.87ID:???

質問者が書いてるじゃん。iframeのsrcを書き換えるって。
iframeの親で、iframeのdocumentがわかるとして、
どうやってiframeの親から、iframeのsrcを書き換えるのさ?
Name_Not_Found [sage] 2019/09/28(土) 20:48:46.74ID:???

お前さぁ……
流石に呆れてしょうがないんだけど教えてやるよ

ここはどんなスレだ?

JSを自ら学ぶためのスレ
だろ?

なんで1から100まで答えを書かないといけないんだ?
いろんなやり方のヒントを示して、質問者が自分の頑張りで解決することを後押しするスレだろ
どうしても分からなければ質問者は追加で質問すればいいだけなんだよ
なんで回答者は抜け目なく回答してあげないといけないんだ?
スレの趣旨と反してるだろ

それくらい分かってくれよ
頼むからさ
Name_Not_Found [sage] 2019/09/28(土) 20:50:53.07ID:???

だから、お前の場合、ヒントになってないって話をしてる
Name_Not_Found [sage] 2019/09/28(土) 20:52:36.57ID:???
$("iframe").contents()を使ったコードを書いてる人に対して
「.contents() 使えばいいよ」が全くヒントにならないことぐらいわかるやろ?

※ .contents() は contentDocumentのjQuery版
Name_Not_Found [sage] 2019/09/28(土) 21:03:54.15ID:???

本当にめんどくせー奴だな
documentからiframeを追える事が分かっていて、の反応なら尚更に驚きだわ

for (let iframe of document.querySelectorAll('iframe'))
iframe.ownerDocument.addEventListener('click', event => console.log(iframe), false);

で、何が問題なのかをいってみろ
44 [] 2019/09/28(土) 21:04:06.50:Gb8piFFd

ありがとうございます!this.defaultView.nameというのが必要なんですね。
ここからidとれそうなので、質問したことができそうです。

私の質問がきっかけで揉めてるようですが、、、
私自身は納得しましたので、終了でお願いします。
みなさん、ありがとうございました。
Name_Not_Found [sage] 2019/09/28(土) 21:05:23.52ID:???

「documentで判定」してないw
Name_Not_Found [sage] 2019/09/28(土) 21:05:57.84ID:???

そう思うのは勝手だが、他人にお前の思いを押し付けるな
お前の場合自分の考えに合わないことに文句を言いたいことが前面に来てる
なんの公益性もない他人を不快にさせるだけのレスはチラ裏にでも書いとけ
Name_Not_Found [sage] 2019/09/28(土) 21:09:39.13ID:???

ヒントになってないと指摘されて
不快に感じてるのはお前だけだw
Name_Not_Found [sage] 2019/09/28(土) 21:11:06.63ID:???
documentとiframeの対応表をMapで持てば可能
Name_Not_Found [sage] 2019/09/28(土) 21:21:26.98ID:???
この場合は、WeakMapでも良い
対応表を用意するのは配列時代からあった方法と認識していたが、ひょっとして今時の人は知らないのが普通なのか?
Name_Not_Found [sage] 2019/09/28(土) 21:22:17.89ID:???

> で、何が問題なのかをいってみろ

動かないから問題(笑)

ttp://https://jsfiddle.net/pczt1muo/
Name_Not_Found [sage] 2019/09/28(土) 21:25:44.98ID:???
俺は最初から対応表で出来ることぐらい知ってんだわ
馬鹿にしてるのは、contentDocumentでできると答えたこと
Name_Not_Found [sage] 2019/09/28(土) 21:35:17.80ID:???
方法が出た後も「煽ることしかできない人」とは対話する意思がないって事なので、話し合うだけ無駄だと思うよ
どうみても、荒らし
78 [sage] 2019/09/28(土) 21:37:04.47ID:???
いいように受け取られそうなので付け加えると、荒らしは
Name_Not_Found [sage] 2019/09/28(土) 21:37:40.95ID:???

お前の毒にも薬にもならない余計な指摘はいらんから
質問者のためにお前が良いと思うコードを披露したらいいじゃん
お前は正義部って結局文句を言いたいだけのクズなの
Name_Not_Found [sage] 2019/09/28(土) 21:50:07.99ID:???
の禁止行為が読めない奴なんだろうよ

> ・煽り、批判等の他人を不快にさせる行為

「回答者へ」にも書いてあるのに、「馬鹿にしてる」と堂々と書く奴だからな…

> ・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
Name_Not_Found [sage] 2019/09/28(土) 22:11:27.75ID:???

だからで書いただろw
Name_Not_Found [sage] 2019/09/28(土) 23:36:46.51ID:???

だから、いちいち他人に絡むな
を100回読み直せ
Name_Not_Found [sage] 2019/09/28(土) 23:38:37.57ID:???
だから
> ・他人の回答を批判する代わりに、自分ならこう書くという例を示してください

って書いてあるから、で例を示したやろ

お前の方こそ、例を示してないからな。
Name_Not_Found [sage] 2019/09/29(日) 01:03:23.07ID:???
動画サイトを運営しているのですが、特にChromeの挙動に悩まされています。
色々調査して分かったのですが、Chromeはユーザーの環境においてWebサイトに掛けるリソースを大胆に調整するようです。
例えば私のメインの64GBメモリ搭載のマシンだとずっと私のサイトを閲覧した後の状態で、
1タブ辺りで500MBくらい消費していますが、4GBのマシンだと100MBも消費していません。
64GBの方は仮想メモリを設定していないこともあって、沢山タブを開いてると4GBのマシンでは余裕なのに
64GBのマシンでメモリ不足(割合で決まるようで残り10GBくらいから発生します)になるということがおきます。

JSでPerformanceAPIを使えばリソース読み込みのタイミングなどを細かく調査できるようですが、
こういうメモリ周りを調査したり調整するための方法ってどんなものがありますでしょうか?
Name_Not_Found [sage] 2019/09/29(日) 01:12:12.70ID:???

禁止行為が読めなかったようだな
Name_Not_Found [sage] 2019/09/29(日) 02:28:42.23ID:???
自分がこのスレで裁判したり取り締まったりする権限を付与されてるとでも思い込んでるんだろうか?
妄想大好きイキリ君は本当に仕方がないやつだな
Name_Not_Found [sage] 2019/09/29(日) 02:48:20.62ID:???
そりゃそんな権限あったらこんな酷い状況になってないさ
ただ一つ言えるのはお前みたいな奴を荒らしと呼ぶになんの支障も無いってことだけ
Name_Not_Found [sage] 2019/09/29(日) 03:41:06.51ID:???
お前が他人のことを考えず暴言を吐くことについて支障がない人間だってことはよく分かったから
JSの話題をする気がないのなら他所で一人でやってくれ
Name_Not_Found [sage] 2019/09/29(日) 04:18:08.87ID:???
コテ付けてくれる?
あとメンとドウも。
メンドウだけにwww
Name_Not_Found [sage] 2019/09/29(日) 04:34:07.41ID:???

Chrome DevTools
84 [sage] 2019/09/29(日) 05:47:07.13ID:???

64GBで仮想メモリを設定してないんだろ? なら使用可能なメモリは64GBしかない。
それに対してメインメモリが4GBで仮想メモリを設定していて、
十分にHDDの空き容量が有るなら使用可能なメモリの最大は16TB (もしくはそれ以上)

ttp://https://docs.microsoft.com/en-us/previous-versions/technet-magazine/ff382717(v=msdn.10)
> on any PC that is capable of running Windows 7?the maximum size of the page file is 16 TB.
Windows 7だけどWindows 10でも同じだろうし、この制限がWindows 7のNTFSのファイルサイズの
制限によるものなら、それ以上のファイルサイズに対応したWindows 10なら8PBかもしれない

つまりな、あきらかに4GBのマシンのほうが使用可能メモリは多いんだよ。
その内容からしたら、Chromeの問題とは思えない
Name_Not_Found [sage] 2019/09/29(日) 06:55:06.80ID:???

> ・他人の回答を批判する代わりに、自分ならこう書くという例を示してください

「自分ならこう書くという例」を書けば、「他人の回答を批判」しても良い、と解釈する人がいるとは思わなかったんだが、テンプレ変えた方がいいのかね…?
Name_Not_Found [sage] 2019/09/29(日) 07:27:46.61ID:???
次から、質の悪い回答に対しては批判もあります。
正当な批判は素直に受け取りましょう。って書いたほうが良いな
Name_Not_Found [sage] 2019/09/29(日) 10:12:26.65ID:???
「他人の回答を批判する代わりに」のルールが読めない奴には言うだけ無駄
Name_Not_Found [sage] 2019/09/29(日) 11:33:22.94ID:???

私の持ってるマシンで実験する分にはそれで良いのですが
ユーザーから状況を収集したり、動的に対応したりしたいということです。


問題は、仮想メモリが動的の変動ものだからどうか分かりませんが、
ChromeやWindowsは実メモリのサイズや割合によって挙動を変えてくるようだという点です。
4GBで仮想メモリを設定している方が使用可能なメモリが多いのであれば、
それに沿った挙動を示しているのであれば問題ないのです。

まずはその真偽も含めて調査がしたいので、メモリの状況を上手く収集する方法が無いかというのと、
一般にそういった問題に対処する方法はないのかというのが質問です。
よろしくおねがいします。
Name_Not_Found [sage] 2019/09/29(日) 17:12:57.67ID:???
OSを解析するしか無い
Name_Not_Found [sage] 2019/09/29(日) 18:05:57.66ID:???
functionって全部アロー関数で書いてもいいですか?問題ある?
Name_Not_Found [sage] 2019/09/29(日) 18:13:33.81ID:???
node.js入れてbabel入れとけば問題ないよ
Name_Not_Found [sage] 2019/09/29(日) 18:14:16.91ID:???

巻き上げとthisにだけ気をつければ
Name_Not_Found [sage] 2019/09/29(日) 18:40:51.74ID:???
式と宣言があるfunctionと違いアロー関数は式のみで宣言はない。
巻き上げにfunction式とアロー関数式に違いはない。
注意すべきはthisのみで、巻き上げに云々は関係ない。(var f = function(){};もvar f = () => {};も同じ)
Name_Not_Found [sage] 2019/09/29(日) 18:52:14.46ID:???
argumentsにも要注意
Name_Not_Found [sage] 2019/09/29(日) 19:00:02.27ID:???
そうだったね。
this、arguments、それからコンストラクタとしての用法がないことからsuper、それにnew.targetだ。
Name_Not_Found [sage] 2019/09/29(日) 19:48:24.05ID:???

なんで宣言を省いてしまうのか
Name_Not_Found [sage] 2019/09/29(日) 21:42:22.70ID:???
そこは考え方や範囲の違いだから深く突っ込まなくていいよ
どうせ分かり会うことはないだろうから
Name_Not_Found [sage] 2019/09/29(日) 22:13:33.79ID:???
functionをアロー関数にするのだから当然宣言も含まれる
考え方以前の問題だろ
Name_Not_Found [sage] 2019/09/29(日) 23:22:17.96ID:???
アロー関数の趣旨は無名関数を簡単に書けるようにすること。
で、無名関数はfunctionでも式としてしか書けない(() => {}に対してfunction(){})
嘘だと思うならはfunction(){}を宣言文で書いてみろよw
function f(){}は有効な関数宣言だけど
function(){}はすぐGC対象になる関数式だぞw
Name_Not_Found [sage] 2019/09/30(月) 00:04:58.40ID:???
(駄目だこいつ質問の意図を理解してねぇ
Name_Not_Found [sage] 2019/09/30(月) 01:47:15.30ID:???

だから突っ込むなと言っただろ
こうなることは分かりきったことだから
お前こそ人の発言の意図を理解しろ
Name_Not_Found [sage] 2019/09/30(月) 08:50:54.84ID:???
と同タイプでマウント君
建設的な議論は望めない
Name_Not_Found [sage] 2019/09/30(月) 08:55:59.41ID:???


> ・他人の回答を批判する代わりに、自分ならこう書くという例を示してください
Name_Not_Found [sage] 2019/09/30(月) 13:03:00.19ID:???
ネストした関数内のthis は、グローバルを指してしまうから、よくバグルだろ

アロー関数の方が、this が、jQuery, Haxe みたいに正常に動くから、
this を一々、自分で、self, that に、代入しなくてもよいw


Linux なら、ps コマンドなどで、システムの状態を調べる

Windows のPowerShell にも、そういうコマンドがあるのでは?
Name_Not_Found [sage] 2019/09/30(月) 13:24:03.62ID:???

ブラウザからPowerShell起動して状態取得とかハッカーかよ
Name_Not_Found [sage] 2019/09/30(月) 18:21:55.03ID:???
prototypeって継承じゃね?
Name_Not_Found [sage] 2019/09/30(月) 20:47:37.82ID:???
プロトタイプ(__proto__)の仕組みは、自分が預かり知らないことを
全てプロトタイプ先に任すというものなので継承ではなく委譲
prototypeプロパティは委譲させられるものを定義する場所で
それをプロトタイプとしたオブジェクトを生み出すnew演算子の効果を持って
形として継承がさせているように見える
Name_Not_Found [sage] 2019/09/30(月) 21:11:34.38ID:???
継承でも委譲でもなく、参照が連鎖するだけ
Name_Not_Found [sage] 2019/09/30(月) 21:45:08.07ID:???

その継承と委譲の区別意味あるか?
Name_Not_Found [sage] 2019/09/30(月) 22:38:25.40ID:???
継承や委譲は考え方。
__proto__は実装方法。

C言語で例外を実装するときにgotoを使う
というのと同じように、__proto__を使って継承や委譲するだけに過ぎない
Name_Not_Found [sage] 2019/09/30(月) 23:59:30.08ID:???
昔は__proto__は仕様じゃなかったのになー
Name_Not_Found [sage] 2019/10/01(火) 01:33:00.24ID:???
> 全てプロトタイプ先に任すというものなので継承ではなく委譲

全くしっくり来ないわ
jQuery#proxyでも委譲云々を唱える奴がいたが、ただの宗教論にしか聞こえない
Name_Not_Found [sage] 2019/10/01(火) 02:02:51.67ID:???
なんでそこでjQuery#proxyがでてくるのかわからん

継承は親クラスから機能を受け継ぐもので
委譲は処理を別のものにさせるものってだけじゃないか

その実装がどうなってるかは関係ないし、
継承、委譲の考え方に、それらを実現するときに使う道具も関係ない
Name_Not_Found [sage] 2019/10/01(火) 06:14:09.47ID:???
簡単に考えれば分かることなのにね
Name_Not_Found [sage] 2019/10/01(火) 08:34:06.08ID:???

proxyは過去いってた奴がいただけで俺も賛同してない
Name_Not_Found [sage] 2019/10/01(火) 09:51:13.25ID:???
賛同するかしないかじゃなくて、
今の話に関係ない話だろってこと
Name_Not_Found [sage] 2019/10/01(火) 12:02:55.17ID:???

> 継承は親クラスから機能を受け継ぐもので

はいダウト。「親クラスから機能を受け継ぐ」というのはのはクラスベースオブジェクト指向固有の考え方。

> その実装がどうなってるかは関係ないし、

と自分で書いてるのに語るに落ちたなw
Name_Not_Found [sage] 2019/10/01(火) 12:16:36.03ID:???
通常のプロパティアクセスも出来るのに「委譲」になるわけがない
Name_Not_Found [sage] 2019/10/01(火) 12:41:02.47ID:???
> 「親クラスから機能を受け継ぐ」というのはのはクラスベースオブジェクト指向固有の考え方。

これが間違い。プロトタイプベースでも「親クラスから機能を受け継ぐ」ことは継承になる。
これは概念の話なので、言語としてクラスとして読んでいるかどうかは関係ない。
クラスに相当するものがあって、それを引き継ぐならどんな実装でも継承
Name_Not_Found [sage] 2019/10/01(火) 12:44:09.15ID:???

> 全てプロトタイプ先に任すというものなので継承ではなく委譲

全てを任せてないだろ
Name_Not_Found [sage] 2019/10/01(火) 15:09:28.94ID:???

「クラスに相当するもの」というのがクラスベース脳から見たらそう見えるというだけ。
頭がクラスベースの実装に染まってるからお前はもうバイアスなしにモノを見ることは無理。
Name_Not_Found [sage] 2019/10/01(火) 19:31:44.69ID:???

だから継承はクラスベースのクラス相当のものための用語なんだが?
継承=クラスベースなんだよ

正確に言えばプロトタイプベースでもクラスは作れるが、以前のJavaScriptは
独特のルールを守って実装しなければいけないから面倒だった。
このJavaScriptでクラスが作りづらいというのはJavaScriptの制限であって
プロトタイプベースの制限ではない

その証拠に最近(といっても随分前だが)改善されてJavaScriptでもクラスを作ることが用意になった。

で、以前の面倒な実装でも今の簡単な実装でも、実装がどうであれ「クラス」にすぎない。
クラスに相当するものは、クラスベースでもプロトタイプベースでも(それ以外)でも存在する。

プロトタイプベースだからクラスがないと考えるのは、お前が持ってるバイアスにすぎない。
Name_Not_Found [sage] 2019/10/01(火) 21:26:24.28ID:???
わざわざ質問してきてこうなんだよと教えたら、いやそうじゃないはずだと突っ張るやつってなんなんだろう
Name_Not_Found [sage] 2019/10/01(火) 21:33:16.95ID:???
残念ながら、回答にケチつけて、マウントとるのか大好き勢が常駐してるんだよ
Name_Not_Found [sage] 2019/10/01(火) 21:53:02.44ID:???
何が制限だバカバカしい。クラスの存在を前提としないプロトタイプベースのオブジェクト指向でクラスが作りにくくて何が悪い。
スポーツカーつかまえてでもそれ農道走りにくいよね言うてるのと同じじゃボケ
Name_Not_Found [sage] 2019/10/01(火) 22:17:51.61ID:???
JSではクラスは作りやすいでしょ
class構文入ってるんだから
Name_Not_Found [sage] 2019/10/01(火) 22:30:09.91ID:???
クラス構文はおじいちゃん介護構文
Name_Not_Found [sage] 2019/10/01(火) 23:36:55.25ID:???
Math.random()が0を返す確率はどれくらいですか?
Name_Not_Found [sage] 2019/10/01(火) 23:38:57.86ID:???

それな。プロタイプベースってのは内部の実装に過ぎず
class構文を使えば、プロタイプベースでクラスを容易に実装できる。

昔はclass構文がなかったから、クラスを実装するのは容易ではなかったが
別に実装できなかったわけじゃない。
Name_Not_Found [sage] 2019/10/02(水) 01:21:14.44ID:???
ECMAScript 2015 で導入された JavaScript クラスは、JavaScript にすでにあるプロトタイプベース継承の糖衣構文です。クラス構文は、新しいオブジェクト指向継承モデルを JavaScript に導入しているわけではありません。

おととい来てね、おじいちゃん?ww
Name_Not_Found [sage] 2019/10/02(水) 03:27:22.39ID:???

糖衣構文だから、どういうこと?

最初から糖衣構文を使うことで、プロタイプベースでも
クラスが書きやすくなったって話をしてるよね?
Name_Not_Found [sage] 2019/10/02(水) 07:30:49.80ID:???

> それな。プロタイプベースってのは内部の実装に過ぎず

仕様を無視した、プロトタイプベースじゃないJavaScript実装が存在するの?
Name_Not_Found [sage] 2019/10/02(水) 07:57:03.07ID:???
「Cでもクラス相当のものは実装できるからCにクラスはある!」
「CでもGC相当のものは実装できるからCはGC言語と言える!」
Name_Not_Found [sage] 2019/10/02(水) 08:09:52.60ID:???
実装すればあるだろうけど実装してないものにはないというだけ
Name_Not_Found [sage] 2019/10/02(水) 08:23:10.93ID:???
ECMAScript仕様って、「プロトタイプベース」ではないの?
Name_Not_Found [sage] 2019/10/02(水) 08:48:24.77ID:???
文言は細かく見よう


> それな。「プロタイプベース」ってのは内部の実装に過ぎず


> 最初から糖衣構文を使うことで、「プロタイプベース」でも

「プロトタイプベース」ではなく、「プロタイプベース」と書いてる(バグリング君も似たようなことをしたな)
仕様を知らないので、「内部の実装」と知ったかぶりをする
Name_Not_Found [sage] 2019/10/02(水) 08:56:21.86ID:???
うん実装じゃなくて仕様だよねw
Name_Not_Found [sage] 2019/10/02(水) 12:54:52.05ID:???
クラスベースっていうのはクラスから逃れられない言語ということであって、
民主主義国家でなくても民主主義はあるしできるように、
JSでも当然クラスという概念は持ち出せるし、構文にまでなってるんだから、
JSにクラスというものは当然に存在すると考えるのが合理的
Name_Not_Found [sage] 2019/10/02(水) 13:24:23.64ID:???
つまりC言語にもクラスは当然存在する。実装できるからw
Name_Not_Found [sage] 2019/10/02(水) 19:14:52.98ID:???
クラスを実装していないC言語にクラスは存在しない。あたりまえ。
Name_Not_Found [sage] 2019/10/02(水) 19:30:14.62ID:???
C++はCで実装されたんだからクラスを存在せしめたのはC言語。あたりまえ。
Name_Not_Found [sage] 2019/10/02(水) 20:09:00.24ID:???

クラスというのは概念なので
クラス専用の構文がないC言語でも
クラスの概念を導入したコードを書ける。

というのが正しいかな


以前のJavaScriptでもクラスの概念を導入することは可能だったし
newがあるんだから、クラスの概念を使うのが普通だった。

それに加えて最近のJavaScriptではクラス専用の構文が加わり
クラスを導入したコードが簡単にかけるようになった。
Name_Not_Found [] 2019/10/02(水) 20:57:14.92:acuNyttM
JSONの発明者ダグラスクロックフォードはJSへのクラス構文導入に大反対だった。
ttp://https://qiita.com/ikedaosushi/items/45652e53c06c761d8137

奇しくもクラス大好き言語JavaはXML大好きである。
クラスおじいちゃんはJSONを使わないように。
Name_Not_Found [sage] 2019/10/02(水) 21:37:48.97ID:???
任天堂の初期のマリオでも、アセンブラで、オブジェクト指向で書いていたとか

同様に、C など、オブジェクト指向ではない言語でも、
苦労すれば、オブジェクト指向で書ける

でも、そういう言語は、オブジェクト指向とは言わない

オブジェクト指向の言語とは、オブジェクト指向を簡単に書けるものだけ。
つまり、クラス構文を持つものだけ!
Name_Not_Found [sage] 2019/10/02(水) 22:49:16.01ID:???
クラス構文は介護用言語の証。
go言語もhaskellもクラス構文なんてない。
一方jsはes2015でおじいちゃん介護言語に成り果ててしまった…
Name_Not_Found [sage] 2019/10/02(水) 23:10:49.03ID:???
Rustもクラス構文なんて無いね。
イケてる言語はみんなない。
それは偶然ではなくて、長年のC++/Java型のクラスベースオブジェクト指向で段々明るみに出てきた問題点を反省して、その問題に対する答えをそれぞれ言語仕様に盛り込んで来てるからなんだよね。
脳死でJavaパクったRubyみたいな要介護言語なんかとは心意気が違う。
JSも同類になったww
Name_Not_Found [sage] 2019/10/02(水) 23:34:04.10ID:???
go言語もhaskellもクラス構文なんてない。
だからオブジェクト指向言語ではない。
第二級言語
Name_Not_Found [sage] 2019/10/02(水) 23:35:03.38ID:???
> Rustもクラス構文なんて無いね。
> イケてる言語はみんなない。

イケてない言語では?
議論に参加して良いのはイケてる言語になってからだよ。
Name_Not_Found [] 2019/10/05(土) 21:34:03.68:rib7i9L6
webSQLって開発とまってるらしいけど
いちおうひととおり使えるれべるにはなってるかな?
indexedDBがわけわからんしSQLの勉強もかねてつかってみたいんだけどどうなんだろ
Name_Not_Found [sage] 2019/10/05(土) 22:15:45.62ID:???
止まってるんじゃなくて放棄されてる
IndexedDBが堅苦しいなら使いやすいライブラリを探す事をおすすめする
ttp://https://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API#See_also
Name_Not_Found [sage] 2019/10/06(日) 02:52:19.19ID:???

廃止が決まってからも長い間残されてたけどchromeは遂に次のバージョンから削除されるってよ。
Name_Not_Found [sage] 2019/10/06(日) 08:13:03.90ID:???
です
ガワが完成し一応はリリースできるものに仕上がったのですが
どうしても音の遅れが気になり色々調べた結果
どうもaudioを使用する場合遅れはしゃあないって結論になりました…
_セック単位の気にしなければ気にならない遅れですがどうしようもないようです
解決するにはweb audio APIを使うしかないみたいだけど知識0だしどうすっかなあ…
Name_Not_Found [sage] 2019/10/06(日) 09:51:57.47ID:???
いい機会だから覚えなよ。tone.js使うとか…
Name_Not_Found [sage] 2019/10/06(日) 12:44:56.95ID:???
下記jQueryのeasing関数をjavascriptのみで作った動作に組み込みたいのですが、
引数の x, t, b, c, d, s の内、x と s の説明が見当たりません。
何を指しているかわかる方がいらっしゃいましたら教えてください。

ttps://github.com/danro/jquery-easing/blob/master/jquery.easing.js

x と s を含まない関数では、しっかりアニメーションしています。
Name_Not_Found [sage] 2019/10/06(日) 15:16:15.73ID:???

sはマジックナンバーでググれ
xを使う関数なんてねーよ
Name_Not_Found [sage] 2019/10/06(日) 18:02:13.55ID:???

そういたします…
調べれば調べるほど自分の欲しい機能がついててもうなんで始めから使わなかったのかと…
情報がそれほど多くなく説明が専門的で理解できるか微妙ですが
幸いあげて下さった簡易版?ライブラリもあるみたいなので頑張ってみます
ありがとう
Name_Not_Found [sage] 2019/10/06(日) 19:26:26.13ID:???
howler.jsもあるでよ
Name_Not_Found [sage] 2019/10/08(火) 21:59:21.35ID:???

レスどうも!
x については一部で使って入るようです・・・
ちょろっと調べたところ、null が代入されていると考えてよいのでしょうか?
easeInBounce: function (x, t, b, c, d) {
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
},

また、マジックナンバーについても調べましたが、どういった関連性があるのでしょうか?
下記で言うと、何か値を入れるか入れないかで処理が変わるようですが・・・
とりあえず 0 でも入れておけってことでしょうか?

easeOutBack: function (x, t, b, c, d, s) {するってこと
if (s == undefined) s = 1.70158;
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
}

不勉強ですみません・・・
Name_Not_Found [sage] 2019/10/08(火) 22:50:08.88ID:???
ttp://http://void.heteml.jp/blog/archives/2014/05/easing_magicnumber.html
Name_Not_Found [sage] 2019/10/08(火) 23:26:55.77ID:???

即効ありがとうございます。
熟読します!
Name_Not_Found [sage] 2019/10/09(水) 04:39:02.31ID:???

使ってないじゃん
easeOutBounceの先見たか?
Name_Not_Found [sage] 2019/10/09(水) 08:42:27.50ID:???

調べるなら、公式サイトをあたれ

ttp://http://gsgd.co.uk/sandbox/jquery/easing/
> † this is an extra parameter not needed for the equations, but necessary for compatibility with jQuery

どのインターフェースに寄せたのか知らんが、無駄な設計にしか見えんな
内部コード上もthisを使えばいいのに、jQuery.easing.easeOutBounce() をわざわざ直接呼びだしているし、作者はよくわかってないんじゃないかね

> easeInBounce: function (x, t, b, c, d) {
> return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
> },
Name_Not_Found [sage] 2019/10/09(水) 20:00:43.15ID:???

1/2^64じゃね?
Name_Not_Found [sage] 2019/10/10(木) 17:13:18.90ID:???
var n=2;
n=3-n; //1
n=3-n;//2
n=3-n;//1

こんな感じで 0,1,2,0,1,2,0,1,2…みたいに3つの数字繰り返す感じのやつ教えてください
(関数以外でできないものか気になったのです)
Name_Not_Found [sage] 2019/10/10(木) 18:58:54.98ID:???
答えを貰う度に、華麗にスルーして、新しい質問を量産する実験でもしてるのかな
Name_Not_Found [sage] 2019/10/10(木) 19:20:18.02ID:???

var n=0;
n=(n+1)%3; //1
n=(n+1)%3; //2
n=(n+1)%3; //0
Name_Not_Found [sage] 2019/10/10(木) 20:06:55.20ID:???

うおおできました! ありゃす!!
Name_Not_Found [sage] 2019/10/10(木) 20:08:46.86ID:???
いいってことよ
Name_Not_Found [sage] 2019/10/10(木) 20:14:41.70ID:???

他人のコードで課題提出するのってどうなんだろうね
172 [sage] 2019/10/10(木) 20:22:00.50ID:???
か、課題・・?
単にプレイヤーについてるような
Aボタン→Bボタン→解除→Aボタン→Bボタン→解除…
みたいなのをやりたかっただけすよ?
ただ、120120…だけじゃなく汎用性ありそうなので結局クロージャで書きました
こんな感じで良いのでしょうか
function turn(d){
var n=0;
return function(){
n=(n+1)%d;
return n;
}
}
var a=turn(3);
a();//1
a();//2
a();//0
var b=turn(2);
b();//1
b();//0
Name_Not_Found [sage] 2019/10/10(木) 20:58:09.62ID:???

やるじゃん
Name_Not_Found [sage] 2019/10/10(木) 21:43:07.63ID:???
n を、クラス変数とみなすと、クロージャは、クラスと同じ。簡易クラス。
Ruby で書くと、@@ はクラス変数

class Cycle
def initialize( divisor )
@@accumu = 0 # 蓄積変数
@@divisor = divisor # 除数
end

def cycle
@@accumu = ( @@accumu + 1 ) % @@divisor # 余り
end
end

obj_2 = Cycle.new( 2 )
5.times { p obj_2.cycle } #=> 1,0,1,0,1

obj_3 = Cycle.new( 3 )
7.times { p obj_3.cycle } #=> 1,2,0,1,2,0,1
Name_Not_Found [sage] 2019/10/10(木) 21:43:17.01ID:???

ジェネレータで無限数列イテレータ作ってもええな。
function* turn(d) {
for (let n = 0; ; n = n % d) yield n++;
}

var a=turn(3);
a.next().value //0
a.next().value //1
var [b, c, d, e, f] = a;
b //2
c //0
d //1
e //2
f //0

ちなみにイテレータを分割代入に使うと無限数列だろうがdone: trueにされてしまうことを、これ作ってて今知ったorz…
犬も歩けば…
Name_Not_Found [sage] 2019/10/10(木) 21:46:42.07ID:???
なんでそういう仕様になってるんだろ?
引き続き.next()やらofやら...やらしたいぜ!
Name_Not_Found [sage] 2019/10/11(金) 06:40:51.36ID:???

nをクリアしないならbigintでやるべき
Name_Not_Found [sage] 2019/10/11(金) 08:19:58.27ID:???
その必要はない。プログラムよく読め。
Name_Not_Found [sage] 2019/10/11(金) 08:41:01.26ID:???
初学者です、色々勉強させて頂いてます

たとえばボタンを押した時などに、動的に画像をずらっと一覧で表示させたく、

text += '<div><img src="./image.jpg"></div>'

をループで回したのち、しかるべき要素内にappendなりinnerHtmlなりして挿入を試しています。
たとえば1000件だとChromeだと一瞬なのですが、Edgeだと1秒近くかかってしまいます。
console.timeなどでどこが遅いかを調べてみると、遅いのはforではなく、appendなどのDOM追加部分であることは分かりました。
DOMの追加の方法は様々あるようですが、いずれもEdgeだと大変遅い状態です。
テンプレで、各種ブラウザによって最適化が異なる、との文言を見ましたが、例えば上記の件だと、高速に挿入するには他にどのような手法が考えられそうでしょうか。
Name_Not_Found [sage] 2019/10/11(金) 08:56:58.79ID:???

DocumentFragment
Name_Not_Found [sage] 2019/10/11(金) 09:02:01.86ID:???
程度の問題でchromeだろうが何千何万ものDOM要素を扱うとやっぱり重い。
バイナリエディタ作ってるときにその問題に遭遇して、googleのスプレッドシートどうやってるんだろうと思って見てみたらなるほどCanvasで実装されてた。
Name_Not_Found [sage] 2019/10/11(金) 11:22:04.83ID:???

昔、エクセルのスプレッドシートみたいに
縦横のテーブル+上と左のヘッダ(A1 A2 みたいなやつ)を
作ろうとしたら難しかった(その時は諦めた)事があるよ

テーブルの内容とヘッダを同期させて
"スムーズに"スクロールさせようとしたけど無理だった。

DOMではそんなこともできないんですよ。
Name_Not_Found [sage] 2019/10/11(金) 11:52:56.04ID:???

昔は知らないが今はposition: stickyとかあるし簡単に出来るような気が…
で言ってんのはあくまでパフォーマンスの問題ね。
読み込んだファイルを1バイト16進テキスト一つ当たり1DOM要素に割り当てたら、軽いファイルなら全く問題ないのだが数百キロバイトのファイルだともうガッタガタだった。
googleみたいにcanvasで実装せず、あくまでDOMにこだわるならinfinite scrollみたいなDOM要素使い回しの実装をやらないとダメだろうなぁ。
Name_Not_Found [sage] 2019/10/11(金) 12:19:04.18ID:???

「1000個のdiv 」「何千何万のtable 」では状況が違い過ぎなのでは?
Name_Not_Found [sage] 2019/10/11(金) 12:53:28.50ID:???
なんだろ、htmlテキストからDOM構築するのに時間かかってるのかな?
src付きimgタグ1000個だもんな。
document.createElement('img')で一個作って、
ループ内で.clone()して.src設定してdocumentFragmentにappendしてみては?
185 [sage] 2019/10/11(金) 13:12:43.93ID:???
documentFragment、試させて頂きました
DOMへの追加が爆速になり感動しました

一方、今度はそのdocumentFragmentの生成時に大きく時間がかかるようになりました
というのも、どうやらcreateElement(img)に対する
setAttribute(src,./image.jpg)が重いみたいです

そこで、で出していただいたcanvasをヒントに、imgタグを使うのをやめて、
createElement(canvas)後、それに対しdrawImageし、Fragmentに追加してみたところ、高速になりました(画像はループ前にnew Image)

Edgeが異様に遅いのはimgタグのsrc指定が問題だったのでしょうか、srcが空の場合はいずれのブラウザも良い速度でした

で出していただいたやり方も試してみたいとおもいます

1000というのは適当な数で、実用上はたかだか300程度のものなのですが、それでも大きく差があったため疑問になった次第です

様々な回答ありがとうございます。
Name_Not_Found [sage] 2019/10/11(金) 15:45:31.30ID:???
> (画像はループ前にnew Image)

今度はそれが重くなってるんじゃねーの?
Name_Not_Found [sage] 2019/10/11(金) 16:25:36.12ID:???
ttp://https://dl.dropboxusercontent.com/s/8zywbtzce1qmysi/%E6%8B%98%E5%BC%95%E7%AA%93%E8%A1%A8%E7%A4%BA.html

ttps://i.imgur.com/GIbBVqR.gif
このGIFのように、モーダルウィンドウを常に文書の表示領域の一定の割合の大きさで表示します
表示中にウィンドウをリサイズしたり、スマホブラウザだとアドレス欄を見せ隠ししても合わせて大きさが変わります
ピンチイン・ピンチアウトでページ表示の表示倍率を変えていても、常に引ききった表示が基準になっています

Chromeでは意図通りに動くんですが、スマホ版Firefoxだとwindow.innerWidth系が表示倍率で変動してしまいます(実際にGIFの最後のように取得すると、Chromeでは一定なのにFirefoxは表示倍率に引きずられる。これは文書ではなく画面の表示領域を指してしまっている)
しかし、window.outerWidthほかは文書の表示領域のサイズではないためクロスブラウザ対応に困ってます

どうにかしてクロスブラウザで、Chromeのwindow.innerWidth系の仕様にあたる数値を取得できないでしょうか
Name_Not_Found [sage] 2019/10/11(金) 16:38:04.05ID:???
Firefoxではこのようにdialog生成時点で表示倍率が高い場合に、合わせて小さくなります
ttps://i.imgur.com/t8zMo1U.gif

ちなみにCSSでの長さ指定がvwやvhでは、スマホブラウザでの実際の文書の表示領域(viewport)ではないので、以下のCSS変数を設定して正確に軽量で実装できています
ここのwindow.innerWidthが、Firefoxでは固定されず表示倍率で変動します

let vw = window.innerWidth/100, vh = window.innerHeight/100, vmax, vmin;
if(vw >= vh){ vmax = vw; vmin = vh; }else{ vmax = vh; vmin = vw; }
document.documentElement.style.setProperty('--vw', `${vw}px`);
document.documentElement.style.setProperty('--vh', `${vh}px`);
document.documentElement.style.setProperty('--vmax', `${vmax}px`);
document.documentElement.style.setProperty('--vmin', `${vmin}px`);
(()=>{
let timeoutId;
window.addEventListener('resize', () => {
clearTimeout(timeoutId);
timeoutId = setTimeout( () => {
vw = window.innerWidth/100;
vh = window.innerHeight/100;
if(vw >= vh){ vmax = vw; vmin = vh; }else{ vmax = vh; vmin = vw; }
document.documentElement.style.setProperty('--vw', `${vw}px`);
document.documentElement.style.setProperty('--vh', `${vh}px`);
document.documentElement.style.setProperty('--vmax', `${vmax}px`);
document.documentElement.style.setProperty('--vmin', `${vmin}px`);
}, 50);
});
})();
Name_Not_Found [sage] 2019/10/11(金) 16:59:22.89ID:???
連投失礼します
ChromeのGIFにデバッグの数字しか見せてなかった……意図通り動作しているところ入れるの忘れてたので貼っておきます
表示倍率に関係なく、文書の表示領域基準になっているのが判ると思う
ttps://i.imgur.com/t8zMo1U.gif
Name_Not_Found [sage] 2019/10/11(金) 17:07:01.15ID:???
同じGIF貼ってしまった……本当にすみません
こっちです
ttps://i.imgur.com/ruyTSaH.gif
Name_Not_Found [sage] 2019/10/11(金) 18:53:13.88ID:???

常に固定サイズフォントってアクセシビリティが恐ろしく良くない実装だな…
Name_Not_Found [sage] 2019/10/11(金) 19:27:14.90ID:???
objectの要素名って先頭は数字ダメって昔習った気がするのですが今でもダメでしたっけ?
var obj={
"329435e5e66be809a656af105f42401e":"hogehoge",
"73bb3253f355e9f0325b4b0b373d27ba":"fugafuga"
};
こういうのです。問題なくできました
もしかしたら”先頭数字ダメ”というのが記憶違いだったかもしれません
Name_Not_Found [sage] 2019/10/11(金) 19:48:27.68ID:???
クオート無しやドット記法で使えないから初心者向けにそういう説明したんだとおも
Name_Not_Found [sage] 2019/10/11(金) 19:50:38.55ID:???
昔もクソもダメだった時などない。
識別子の制限と混同しているものと思われる。
var 0120abc;
とか
function 090xyz() {}
とかがダメなのであって。
Name_Not_Found [sage] 2019/10/11(金) 20:00:46.78ID:???

配列のインデックス値と混同するからダメ等のローカルルールじゃないか?
Name_Not_Found [sage] 2019/10/11(金) 21:01:26.84ID:???
後の祭りだけど、ダメだけ覚えてダメな理由を覚えないのがダメなんだけどな…
varダメ、関数式ダメ...etc
思考停止で選択肢を潰してるだけ、ってことにいい加減、気が付くべき
Name_Not_Found [sage] 2019/10/11(金) 21:10:19.54ID:???

え?いや、上で書いたけど--vwと--vhのCSS変数は表示領域に合わせて変更する実装みなってる
試しに で試してみて欲しい、多分ちゃんと真ん中に75%の幅・高さで表示されるはず
Name_Not_Found [sage] 2019/10/12(土) 00:10:46.22ID:???

その都度、DOM にアクセスすると「JavaScript(JS)/DOM 間の時間 × 千回分」が掛かる

それを、JS内のDocumentFragment で、千回行ってから、
最後に1回だけ、DOMにアクセスするように変える

Vue.js も同じような仕組み。
JS内に、すべてのDOMのコピー(仮想DOM)を持っていて、
変更された部分だけを、実際のDOMに反映する

これの欠点は、速いが、メモリをDOMの2倍使うこと。
常に、速度と使用メモリ量は、取替えられる!
Name_Not_Found [sage] 2019/10/12(土) 07:07:53.47ID:???
その都度アクセスするように書いてもモダンブラウザならキャッシュが効く
Name_Not_Found [sage] 2019/10/12(土) 08:31:34.12ID:???

はリフローを理解して提案しているし、でその件は解決してる
Name_Not_Found [sage] 2019/10/12(土) 12:26:47.75ID:???
してないね
Name_Not_Found [sage] 2019/10/12(土) 12:27:51.65ID:???
なんだレス乞食か
相手して損したNGしとこ
Name_Not_Found [sage] 2019/10/12(土) 13:40:24.45ID:???

話噛み合ってないけど、 の安価先間違ってない?
そもそも話題が違うんだけど()
Name_Not_Found [sage] 2019/10/12(土) 14:26:41.81ID:???
やっぱりレス乞食か
相手して損したNGしとこ
Name_Not_Found [sage] 2019/10/12(土) 17:10:07.55ID:???
えっ ID非表示スレでNGを?
Name_Not_Found [sage] 2019/10/12(土) 18:35:05.77ID:???
できらぁ!
Name_Not_Found [sage] 2019/10/12(土) 19:19:26.38ID:???
毎回質問一個あるたび関係ないとこで言い争うの草
Name_Not_Found [sage] 2019/10/12(土) 19:31:12.05ID:???
ここのあいさつみたいなもんだから
Name_Not_Found [sage] 2019/10/13(日) 03:35:46.09ID:???
には、 と同じ話題に見えてて安価先を間違えてるんじゃないかって提案してあげたのにレス乞食とは……

は固定フォントサイズじゃなくてむしろレスポンシブだし、それ言ったのにinnerWidthの代替がfragmentで解決しているだの返された
それでも穏やかに人違いじゃないかって提案してあげたのにレス乞食認定って怖い
Name_Not_Found [sage] 2019/10/13(日) 03:37:26.73ID:???
そもそもID非表示なのに主語書かずに指示語で喋ったら意思疎通厳しいだろ
Name_Not_Found [sage] 2019/10/13(日) 06:46:05.27ID:???
すいません。質問です。
ifで奇数と偶数のペアならOK、それ以外はNGと出したいのですがif内の処理はどのように書けば良いのでしょうか?
Name_Not_Found [sage] 2019/10/13(日) 08:08:02.62ID:???
整数は前提で良いの?
Name_Not_Found [sage] 2019/10/13(日) 09:18:40.21ID:???
それは不明ですので、前提とそうでない場合の解答をお願いします
Name_Not_Found [sage] 2019/10/13(日) 09:57:51.62ID:???
じゃあ整数どころか数字ですらなくて、
「マンコ」や「ちんこ」といった文字列が来ても偶奇を判定するの?www

うーん…マンコはよく見たらグロいから奇数かなぁ?
ちんこは偶数!タマタマだけに!wwww
Name_Not_Found [sage] 2019/10/13(日) 10:16:28.86ID:???
偶数も奇数もどっちも整数なんだからそれ以外は全部NGでいいだろ。
両方整数でかつ足し合わせた値が奇数ならOKとか。
Name_Not_Found [sage] 2019/10/13(日) 12:40:44.25ID:???
たしかにちんこは無理数だからNGだな
Name_Not_Found [sage] 2019/10/13(日) 12:49:46.37ID:???
偶々(たまたま)だけにwwwww
Name_Not_Found [sage] 2019/10/13(日) 13:09:03.39ID:???
218です
さんヒントありがとうございます
できました
Name_Not_Found [sage] 2019/10/13(日) 13:35:57.63ID:???
要素に定義されたスタイルを取得するJSのテストページなんですが、お使いの環境でも正常に機能するか確認頂きたいです

ボタン押して「インライン」「全称セレクタ」「要素セレクタ」「IDセレクタ」の、4つの種類でCSS属性・値・!importantかどうか・セレクタが表示されてればOKなんです

ttp://https://download1.getuploader.com/g/5da2a832-84fc-4625-bfb2-6407a010e467/6%7Cff11_cast/378/%E8%A6%81%E7%B4%A0%E3%81%AB%E5%AE%9A%E7%BE%A9%E3%81%95%E3%82%8C%E3%81%9F%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%AB%E5%8F%96%E5%BE%97.html
Name_Not_Found [sage] 2019/10/13(日) 17:50:19.77ID:???
バックティック文字を入れ子したいのですが
`${"`"}←これがバックティック文字です。
変数や式を扱えます。例:${"`"}\$\{a}${"`"}`

もっとスッキリ書く方法をおしえてください
227 [sage] 2019/10/13(日) 17:54:00.22ID:???
訂正
\$\{a}の部分は\${a}でよかったです
Name_Not_Found [sage] 2019/10/13(日) 18:15:20.14ID:???
なんだかよく分からんが
`${"`"}\${a}${"`"}`

"`${a}`"

'`${a}`'
と書くのと同じだよ。
`${"`"}`とか穴を掘ってすぐ埋めるみたいなことして何がしたいのか分からん。
Name_Not_Found [sage] 2019/10/13(日) 18:18:52.11ID:???

こういうあげ足取りではなくて、どなたか解答をいただけませんか?
Name_Not_Found [sage] 2019/10/13(日) 18:22:01.98ID:???

"`${a}`"
Name_Not_Found [sage] 2019/10/13(日) 18:23:52.67ID:???
の一体何が揚げ足取りなのか分からん。
もっとスッキリ伝わる質問を書いてください
Name_Not_Found [sage] 2019/10/13(日) 18:28:49.52ID:???
俺も何がしたいのかさっぱりわからんが
`\`\${a}\``
か?個人的には大してスッキリしたようには見えないが…
挙げ足とりとか失礼なこと言ってないでの通りやったほうがいい
Name_Not_Found [sage] 2019/10/13(日) 18:41:53.55ID:???
もっとすごいスッキリ書く方法知ってるけど質問者の態度が気に入らないので教えませんwwwww
227 [sage] 2019/10/13(日) 19:20:31.26ID:???

>`\`\${a}\``か?
そういうことです
最初にそれをやっていたのですがエラーが出たので質問するに至りました
で、エスケープをあらためてやってみると成功しました

おそらくですが、最初に``hogehoge``みたいなことをしてシンタックスエラーが出て
次にhogeを定義していないのに`\`${hoge}\``みたいなことをしたときに出たエラーを
シンタックスエラーと勘違いしたのだろうと思いました
お騒がせしました

> 229の通りやったほうがいい
テンプレート文字の中で${}を使いたい、かつ出力に`${}`文字列が出てくるので
つまりバッククォート内でバッククォートの入れ子にしたかったのです

ただ、エスケープで書き直してみましたが仰るとおりめちゃくちゃ見にくいですね

ちなみには自分ではありません
Name_Not_Found [sage] 2019/10/13(日) 19:23:15.32ID:???
バックティックと爆竹って
何が違うんですか?
Name_Not_Found [sage] 2019/10/13(日) 19:30:00.72ID:???
ほんとID非表示だからか何の主張も発信もないレス多いよな
今に始まった事じゃないし過疎るよりましかも知れんが
Name_Not_Found [sage] 2019/10/13(日) 19:32:12.92ID:???
は成り酢飯愉快犯荒らしだったのか
Name_Not_Found [sage] 2019/10/13(日) 20:05:21.06ID:???

うーん、要望にマッチするか微妙だが一案として、
const escBQ = ({raw}, ...vals) => String.raw({raw: raw.map(s => s.replace(/BQ/g, '`'))}, ...vals)
みたいなテンプレート関数を作って、

escBQ`あああBQこんにちは
BQHello
よい朝BQ
BQ`

ってやれば文字列として
あああ`こんにちは
`Hello
よい朝`
`
が得られるよ。
227 [sage] 2019/10/13(日) 20:13:53.69ID:???

なるほど、フィルターしたほうが断然みやすそうですね
見た目だけの問題なのでBQのところを絶対に使わなさそうな(❝⚠❛みたいな)絵文字とか機種依存にしようかなと思いました
(副作用ありそうですが)
ありがとうございました
Name_Not_Found [sage] 2019/10/13(日) 23:24:28.52ID:???

あいつら全員グンマーだろ
Name_Not_Found [sage] 2019/10/14(月) 01:16:48.50ID:???

も質問者で、回答を釣るのに失敗したから、別人の体で出てきただけだと思う
Name_Not_Found [sage] 2019/10/14(月) 02:28:40.45ID:???
もぅいぃょそうゅぅ高度なじょうほぅせんゎ
Name_Not_Found [] 2019/10/14(月) 06:24:39.18:HrB2uo0v
ttp://https://mohayonao.hatenadiary.org/entry/20111108/1320756534

ここでやっているようなプログラムを作っても別タブを開いている間は止まります。
同じような経験をしていらっしゃる方いませんか?

workerの部分を別ファイルを使っても、blobを使って単一ファイルにまとめても
同じようになります。

ttp://https://qiita.com/mohayonao/items/b4f713bf8ab9de8907f1
ちなみにここのやつをそのままコピーしてやっても、workerありでも
無しでも同じような結果になりました。
ブラウザはChrome、Operaと試しました。
上記のカウンターを数えるだけのプログラムですが
別タブに行くとworkerがあろうとなかろうと、タイマーが止まってしまいます。
何かいい方法ないでしょうか。
ちなみに誰か、これらのプログラムを試してみて成功した方いらっしゃいませんか?
というより、プログラムは動くので、別タブに行ってもタイマーが止まるかどうか気になります。
緊急退避用でお世話になった方ありがとうございます。
個人的にやった修正はBlobbuilder() を Blobに変更しただけ。
条件文とかはそのままにしています。
Name_Not_Found [] 2019/10/14(月) 06:42:27.50:HrB2uo0v
そのままでは使えそうにないですね。
とりあえずソースをストリングにするところから始めます。
Name_Not_Found [] 2019/10/14(月) 07:18:19.24:HrB2uo0v
Blobにしたら行けました。ありがとうございます。
Name_Not_Found [] 2019/10/14(月) 08:40:48.05:iyZ+xD4b


このスレには、

みたいな荒らしがいるから、要注意!

質問に関係ないことで、言い争いをしている奴も、荒らし
Name_Not_Found [sage] 2019/10/14(月) 10:48:08.63ID:???
継承したいときprototypeに入れるのはクラスでもコンストラクタでもなく別のインスタンスなの?
Name_Not_Found [sage] 2019/10/14(月) 10:57:16.38ID:???
は荒らしではないだろう
道端に落ちてるゴミを一々踏んづけに言って騒ぐのは異常者
1つのちゃんとした質問レスにそれだけを見てそのまま返答すればいいだけなのに
コテもついてない余計なレスを勝手に同一人物だと思い込んだり
回答者同士でケチつけ合ったりするのが荒らしだろう
Name_Not_Found [sage] 2019/10/14(月) 11:02:07.00ID:???

継承したいときprototypeに入れるのはただprototypeに入れてるだけ
new演算子が関数コンストラクタとprototypeに入れられてるものを良しなに扱ってインスタンスを生成してくれる
継承したいときprototypeに入れるのはただprototypeに入れてるだけ
Name_Not_Found [sage] 2019/10/14(月) 13:08:16.76ID:???
class構文を使うとこういう構造ができあがる

class 親 {}
// 親.prototype.constructor = 親
// 親.prototype.__proto__ === Object.prototype

class 子 extends 親 {}
// 子.prototype.constructor = 子
// 子.prototype.__proto__ === 親.prototype

継承のために指定するのはこの部分
// 子.prototype.__proto__ === 親.prototype
Name_Not_Found [sage] 2019/10/14(月) 13:33:46.60ID:???

なるほどインスタンスを見てかってにやってくれるんすな
モヤモヤが残りますが
Name_Not_Found [sage] 2019/10/14(月) 13:57:41.95ID:???
class Parent {
constructor(){
this.a=10;
this.b=20;
}
sum(){ return this.a+this.b; }
}
class Child extends Parent{
constructor(){
super();
this.a=2;
this.b=3;
}
}

var hoge=new Child();
console.log(hoge.sum());

super()ってなんで必要なんですか・・?
extendsする=ふつうはparentのメソッド使うからsuperする必要あります・?
Name_Not_Found [sage] 2019/10/14(月) 14:01:27.22ID:???
ふつうって?Java?
Javaでは要らないの?
Name_Not_Found [sage] 2019/10/14(月) 17:37:06.10ID:???

継承に詳しそうだから質問お願いします
このコードのアラート2回目以降で確認できるんですけど、instance01.constructor === Constructor01がfalseになるのは何故ですか?

コンストラクタのプロトタイプオブジェクトにメンバを設定するとき.prototype.変数名に代入だとtrueなんですが、.prototype = オブジェクトの形にするとfalseになるんです

続き

(()=>{
'use strict';
const stringifyObject = (object) => {
return JSON.stringify(object, (key, value) => {
if(typeof value === 'function') {
return value.toString();
} else {
return value;
}
}, ' ');
};

const Constructor01 = function Constructor1(name) {
this.name = name;
};
Constructor01.prototype.aShareProperty = 0;
Constructor01.prototype.aShareFunction = () => { Constructor01.prototype.aShareProperty++; };

let instance01 = new Constructor01('instance1');
Name_Not_Found [sage] 2019/10/14(月) 17:37:43.04ID:???
の続き
const showInfo = () => {
window.alert(`instance01.name: ${instance01.name},\n`
+ `instance01.constructor: ${instance01.constructor},\n`
+ `Constructor01: ${Constructor01},\n`
+ `instance01.constructor === Constructor01: `
+ `${instance01.constructor === Constructor01},\n`
+ `instance01[[prototype]]: ${stringifyObject(Object.getPrototypeOf(instance01))},\n`
+ `Constructor01.prototype: ${stringifyObject(Constructor01.prototype)},\n`
+ `instance01[[prototype]] === Constructor01.prototype: `
+ `${Object.getPrototypeOf(instance01) === Constructor01.prototype},\n`
+ `instance01.aShareProperty === instance01[[prototype]].aShareProperty &&`
+ ` instance01.aShareProperty === Constructor01.prototype.aShareProperty: `
+ `${instance01.aShareProperty === Object.getPrototypeOf(instance01).aShareProperty &&
instance01.aShareProperty === Constructor01.prototype.aShareProperty},\n`
+ `instance01.aShareFunction: ${instance01.aShareFunction},\n`
+ `instance01[[prototype]].aShareFunction: ${Object.getPrototypeOf(instance01).aShareFunction},\n`
+ `Constructor01.prototype.aShareFunction: ${Constructor01.prototype.aShareFunction}`
);
};
showInfo();
Constructor01.prototype = {
aShareProperty: 0,
aShareFunction: () => {
Constructor01.prototype.aShareProperty++;
}
};
instance01 = new Constructor01('instance1');
showInfo();
instance01.aShareFunction();
showInfo();
})();
Name_Not_Found [sage] 2019/10/14(月) 18:56:54.95ID:???
> instance01.constructor === Constructor01がfalseになるのは何故ですか?

instance01オブジェクト自身にはconstructor プロパティは設定されていない。この場合、
instance01.__proto__.constructor
instance01.__proto__.__proto__.constructor
instance01.__proto__.__proto__.__proto__.constructor

と__proto__をたどりながらconstructorプロパティを探し、最初に見つかったものが取得される(プロトタイプチェーン)。

Constructor.prototypeを新しいオブジェクトで上書きした場合は
Constructor.prototype.__proto__ === Object.prototype
となっている。

instance01.__proto__.constructor
=== Constructor.prototype.constructor
→なし
instance01.__proto__.__proto__.constructor
Constructor.prototype.__proto__.constructor === Object.prototype.constructor
=== Object
となるので最終的には
instance01.constructor === Object
Name_Not_Found [sage] 2019/10/14(月) 19:00:35.36ID:???

必要あるでしょ
引数はどうするの?
Name_Not_Found [sage] 2019/10/14(月) 20:26:17.13ID:???

ありがとうございます!凄くよく分かります

(コンストラクタ).prototype.(プロパティ)に代入したときは、既に存在するプロトタイプオブジェクトのプロパティを変更するだけだから(インスタンス).constructorが(コンストラクタのプロトタイプオブジェクト).constructorなんですね

逆に(コンストラクタ).prototypeに直接代入したときは、プロトタイプオブジェクトとして(オブジェクト).constructorを持たず結果的にObject.prototype.constructorがプロパティconstructorとして参照されるんですね
Name_Not_Found [] 2019/10/14(月) 22:02:02.81:HrB2uo0v
244ですが、web workerの使い方は分りましたが
var e = new MouseEvent("click", {
bubbles: true,
cancelable: true,
clientX: x,
clientY: y
});
element.dispatchEvent(e);

などのような、イベントだとweb workerを使っても
別タブに移動するたびに、実行が止まってしまいます。
上記のinnerTextを書き換えるだけのプログラムも同時に
同じ関数に入れていますが、そちらはタイマーが働いています。
メインのUI側のonmessegeの中のマウスイベントは無効になるのでしょうか。
Name_Not_Found [sage] 2019/10/14(月) 22:05:57.57ID:???
これ実行したときにAが1つしか表示されないのは何故ですか?
bのインスタンス生成は新しくSampleのインスタンスを生成することにはならないのですか?
3行目と6行目それぞれでAが表示されるのでは無いのですか?
ttps://i.imgur.com/O63piVm.jpg
ttps://i.imgur.com/dkGWlmY.jpg
Name_Not_Found [sage] 2019/10/14(月) 22:28:16.59ID:???

それJavaScriptやない、Javaや
Name_Not_Found [sage] 2019/10/14(月) 22:32:45.09ID:???

隠れてる間にビューを書き換える必要性は無いでしょ
Name_Not_Found [sage] 2019/10/14(月) 22:45:47.59ID:???

失礼しました
間違えました
Name_Not_Found [sage] 2019/10/15(火) 04:44:11.29ID:???

そりゃ、親のコンストラクタを呼んでいないと、何かの前提条件が保証できない

例えば、そこでデータベース接続しているかも知れないし、
値をキャッシュしているかも知れない

子クラスからは、親クラスが何をしているかは、わからない。
親クラスのすべてのコードを読む人など、いるわけないし
Name_Not_Found [sage] 2019/10/15(火) 04:56:39.81ID:???

MouseEvent は、GUI のイベントだから、別のタブがフォーカスを持つと止まる

1つのPC で、フォーカスを持つ、GUIアプリは1つだけ!
フォーカスを持つアプリは、キーボード・マウスも占有するから、
2つ以上、同時に存在できない

サーバーみたいに、バッググラウンドで動き続けるプロセスは、フォーカスを持てない
Name_Not_Found [] 2019/10/15(火) 09:17:24.27:narBTsOx

別タブじゃなくて、別ウインドウだときちんと動作するのですが
それは、別のGUIアプリの扱いをしているからだと考えていいのでしょうか。
Name_Not_Found [sage] 2019/10/15(火) 09:32:06.73ID:???
もうそろそろブラウザ依存の話はやめてくれないか?
それはJavaScriptの話じゃない。
Name_Not_Found [sage] 2019/10/15(火) 09:39:47.45ID:???

何訳のわからないこと言ってんの
別タブだと描画する必要がないし、入力を受け付けることもないから、それらに関するイベントループがサスペンドされてるかイベントバブリングが抑制されてるんでしょ
別ウィンドウだと描画する必要が基本的にはあるという違いがあるでしょ
Name_Not_Found [] 2019/10/15(火) 10:43:26.64:narBTsOx

よくわかりました。ありがとうございました。
Name_Not_Found [sage] 2019/10/15(火) 16:35:02.28ID:???
classの継承って例えば
動物(親):ゾウ(子)、ライオン(子)、犬(子)
はしっくりくるんだけど
動物園(親):ゾウ、ライオン、犬
っておかしくない?
例えば、ゾウ.speak()→その動物の鳴き声
はわかるけど
ゾウ.count()→動物園にいるその動物の個体数
ってなんか違和感あるんだけど一体どうすれば
Name_Not_Found [sage] 2019/10/15(火) 17:19:25.37ID:???

まずな「例え」というのは何かっていうのが
わかってないやつが多い。

例えっていうのは、あることを知らない人に対して、
知ってるであろう他の概念を使って理解を容易にすることなんだよ。

例えは例えであって、本物じゃないんだから
本物との違いがあるのは当たり前

どうするかだって?どうもしなくていいよ。
例えで継承を理解したなら、ソフトウェア開発で必要なときに使えばいい

どうせそんな動物園、作るわけじゃないんだろ?
Name_Not_Found [sage] 2019/10/15(火) 17:22:33.82ID:???

ゾウは動物だけど、
ゾウは動物園じゃないだろ

おかしいなら、継承を使うのが間違いってことだ
Name_Not_Found [sage] 2019/10/15(火) 18:26:58.47ID:???

その辺は省処理量・省電力化のためにブラウザの開発者が処理を節約する実装をしている場合も多い
仕様書や参考文献に乗ってないけど処理止まる実装になってる事もあるってのを覚えておくと良いよ
Name_Not_Found [sage] 2019/10/15(火) 18:57:04.53ID:???
てきとう抜かすな
Name_Not_Found [sage] 2019/10/15(火) 21:13:51.14ID:???

ttp://https://developer.mozilla.org/ja/docs/Web/API/Window/requestAnimationFrame
〉 このコールバックの回数は、たいてい毎秒 60 回ですが、一般的に多くのブラウザーでは W3C の勧告に従って、ディスプレイのリフレッシュレートに合わせて行われます。
ただし、コールバックの確率は、バックグラウンドのタブや隠れた <iframe> では、パフォーマンス向上やバッテリー消費を減らすために低くなるでしょう。

仕様書では60Hzだが実際のブラウザは動作を変更する場合あり
他にも ttp://https://japan.cnet.com/article/35098191/
ttp://https://blogs.windows.com/japan/2016/06/28/edge-battery-anniversary-update-jp/

適当に見えるほど画期的な事実だったんなら、より後学のためになるな
よかったな
Name_Not_Found [sage] 2019/10/15(火) 23:15:27.66ID:???

継承is-a, 包含has-a の違い

動物:ゾウは、継承
動物園:ゾウは、包含

車:消防車は、継承
車:ハンドルは、包含
Name_Not_Found [sage] 2019/10/16(水) 03:10:04.06ID:???
let abc = Array(10).fill(0).map(v => {
return hoge();
})
みたいに初期化しているんですけどfillを無くす書き方は無いでしょうか?
サイトによってはundefinedで埋められているとありますが
実際は空の配列のようです
Name_Not_Found [sage] 2019/10/16(水) 07:16:19.71ID:???
自分でfillMapとかのメソッドを作ったら良いだけでは?
Name_Not_Found [sage] 2019/10/16(水) 07:18:55.02ID:???

その例で言っても車クラスからハンドルインスタンスができるのは不自然
Name_Not_Found [sage] 2019/10/16(水) 07:21:00.65ID:???

参照してた元コード貼っちゃうといろいろと面倒なのでその部分だけ例えた感じっす

なるほど単にそういうことですよね

なるほどさらに、しっくりきました
Name_Not_Found [sage] 2019/10/16(水) 07:54:28.08ID:???
横からですが

車クラスから作られた車インスタンスが
車部品クラスから生成されたハンドルインスタンスを
包含するということでは?
Name_Not_Found [sage] 2019/10/16(水) 08:18:06.21ID:???
動物クラスに”死(HP0状態)”メソッドやプロパティをつけた場合も
動物園クラスやその上の包含クラスからみれば、死してなお包含ということかな

あるゾウXが動物園Aから動物園Bに移転する場合は
動物園クラスを包含する展示施設クラス的なのをつくって
(A)展示施設("動物園Bの名前やIDやオブジェクト").登録("ゾウXの名前やIDやオブジェクト");
内部は、
(1)return 動物園Bオブジェクト;
(2)動物園B.登録(ゾウX);
(3)return ゾウXオブジェクト
(4)ゾウX.所属変更(動物園B);
(5)this.所属=動物園B;
(0)(A)でそもそも動物園B、ゾウ共にオブジェクトが引数なら一発変更
みたいな感じだろうか・・こんがらがってきた
Name_Not_Found [sage] 2019/10/16(水) 10:13:07.99ID:???

好きなの選びなはれ。
let abc = [...Array(10)].map(() => hoge());
let abc = Array.from(Array(10), () => hoge());
let abc = Array.from({length:10}, () => hoge());
let abc = Array.apply(null, {length: 10}).map(() => hoge());
let abc = [...Array(10)].reduce(acc => [...acc, hoge()], []);
let abc = [...Array(10)].reduce(acc => acc.concat(hoge()), []);
let abc = [...function*(){for(let n=0;n++<10;)yield hoge()}()];
let abc = [...function*(){let n=0;while(n++<10)yield hoge()}()];
let abc = Array.from(Array(10)).reduce(acc => [...acc, hoge()], []);
let abc = Array.from({length:10}).reduce(acc => [...acc, hoge()], []);
let abc = [...{*[Symbol.iterator](){for(let n=0;n++<10;)yield hoge()}}];
let abc = [...{*[Symbol.iterator](){let n=0;while(n++<10)yield hoge()}}];
let abc = Array.apply(null, {length: 10}).reduce(acc => [...acc, hoge()], []);
let abc = Array.apply(null, {length: 10}).reduce(acc => acc.concat(hoge()), []);
Name_Not_Found [sage] 2019/10/16(水) 10:32:04.56ID:???

よく考えたら今回のhoge、引数取らないみたいだから上の4つ以下のように関数ラップはずせるわ。Yo!Yo!
let abc = [...Array(10)].map(hoge);
let abc = Array.from(Array(10), hoge);
let abc = Array.from({length:10}, hoge);
let abc = Array.apply(null, {length: 10}).map(hoge);
Name_Not_Found [sage] 2019/10/16(水) 19:07:36.76ID:???
ありがとうでしょ!
Name_Not_Found [sage] 2019/10/16(水) 19:28:20.98ID:???
怒濤の選択肢ワロタwww
Name_Not_Found [sage] 2019/10/16(水) 19:40:15.96ID:???
hoge(v)の間違えじゃ?初期値0はhoge()内で設定
[...Array(10)].map(hoge)一択だな
Name_Not_Found [sage] 2019/10/16(水) 20:37:30.89ID:???
拡張性、汎用性、パフォーマンス、共に
let abc = [...function*(){for(let n=0;n<10;n++)yield hoge()}()];
が最強。他はカスである。
Name_Not_Found [sage] 2019/10/16(水) 21:27:45.31ID:???
forループで順番問わないなら

let i = 9;
for(; i >= 0; i--) { }

の方が鮮やか
Name_Not_Found [sage] 2019/10/16(水) 21:31:53.91ID:???

while (i--)
Name_Not_Found [sage] 2019/10/16(水) 21:55:50.44ID:???

こんなにあるんですね
ありがとうございます
一番短いやつ使います
Name_Not_Found [sage] 2019/10/16(水) 23:00:08.44ID:???
AppleがOpenGL廃止するから、
WebGLももう終わりを迎えようとしてるんですね。
Name_Not_Found [sage] 2019/10/17(木) 04:44:32.08ID:???

オブジェクト指向の典型例。
Generic, 総称型

動物園は、親クラスの動物型の配列を持つ。
死ねば、そこから削除する

動物型の配列.each とすると、
各動物は自動的に、自分の(子)クラスに対応した、メソッドを呼ぶ

ゾウは、ゾウのように鳴き、
ライオンは、ライオンのように鳴く

子クラス独自の動きをする
Name_Not_Found [sage] 2019/10/17(木) 12:20:56.42ID:???
ttp://https://youtu.be/EFM_g_mC_IA
Name_Not_Found [sage] 2019/10/17(木) 18:55:22.49ID:???
規約違反だと思うのでとりあえず通報ポチってみましたww
Name_Not_Found [sage] 2019/10/19(土) 21:08:06.29ID:???
function test(a,b) {
var a=a,b=b;
〜処理〜
}
こんなふうにjavascriptって、関数の引数を
var で新しく変数で定義するってやるべきでしたっけ?
function test(a,b) {}ってやる時点で関数testの中のローカル変数a,b
って意味になって、新しくvar a=a,b=bって不要でしたっけ?
Name_Not_Found [sage] 2019/10/19(土) 21:08:53.25ID:???
不要
Name_Not_Found [sage] 2019/10/19(土) 21:14:47.77ID:???
やっぱ不要ですか
ありがとうございました
Name_Not_Found [sage] 2019/10/19(土) 21:55:29.02ID:???
実引数が文字列とか数値とかの不変な型、じゃない場合は仮引数に対して値とか値の内容を変えたつもりでも、実引数も変更されるから注意
Name_Not_Found [sage] 2019/10/19(土) 22:53:55.62ID:???
ニホンザル語→《翻訳》→日本語

オブジェクトのプロパティを変えると
そのオブジェクトを参照している全ての変数に於いて変えた結果が反映されるよ
Name_Not_Found [sage] 2019/10/20(日) 01:40:54.06ID:???
いや当たり前だろどれも同じオブジェクト指してるんだから。
そうじゃないと困るわ。
Name_Not_Found [sage] 2019/10/20(日) 02:14:08.52ID:???

それじゃ特別な注意点伝わってない

「仮引数への操作が、そのまま実引数を操作することと(変数名とスコープを覗いて)全く同じ」 → プロパティの操作"以外にも"全ての破壊的変更が実引数にも反映される
これが見落としがちだしあんたも見落としてる
Name_Not_Found [sage] 2019/10/20(日) 09:06:18.69ID:???

なるほど、分からん
Name_Not_Found [sage] 2019/10/20(日) 09:09:51.22ID:???
const a = { x: "x" }

function f( a ) { a.x = 1 }

f( a )
console.log( a ) //=> { x: 1 }
Name_Not_Found [sage] 2019/10/20(日) 10:09:28.29ID:???

文系らしい理解だなw
CやらC++やったら発狂しそうwww
「仮引数への操作」じゃなくて仮引数通して参照先のオブジェクト直接操作してんだバカ。
何が「反映される」だバカwww
305 [sage] 2019/10/20(日) 10:28:16.60ID:???
C/C++ 以外の言語の引数は、primitive 以外は、参照渡し!

引数の状態を変えると、渡されたオブジェクトの状態も変わる!
Name_Not_Found [sage] 2019/10/20(日) 11:00:29.81ID:???
「も変わる」じゃねーよ同一のものなんだから。
Name_Not_Found [sage] 2019/10/20(日) 13:01:11.64ID:???
概念的には「も」でいいんじゃないの
仮引数には別名を付けれるんだし、エイリアスちう概念
Name_Not_Found [sage] 2019/10/20(日) 13:11:06.86ID:???
よくない。
スミスさんは結婚して山田さんになりましたが仕事では旧姓スミスを引き続き使用しています。

山田さんはある日、家で料理中に指を切ってしまいました。
すると、スミスさん「も」指を切ってしまいました。

これはおかしい。
スミスや山田はラベルに過ぎない。
スミス. hp -= 10

山田.hp -= 10

同一オブジェクトに対する同じ操作。
Name_Not_Found [sage] 2019/10/20(日) 14:27:21.68ID:???
居候している田中さんも切ってしまったらどうなるの?
Name_Not_Found [sage] 2019/10/20(日) 14:54:09.28ID:???
山田(旧姓:スミス)さんと田中さんは別人(別オブジェクト)だからそこは「も」でいい。
Name_Not_Found [sage] 2019/10/20(日) 15:56:43.57ID:???
隣に住むヤクザさんも指を切ってしまいました。
Name_Not_Found [sage] 2019/10/20(日) 15:59:41.70ID:???
山田(旧姓:スミス)さんと田中さんと隣に住むヤクザさんは別人(別オブジェクト)だからそこは「も」でいい。
Name_Not_Found [sage] 2019/10/20(日) 16:02:41.90ID:???
そう。別人だと思っていたのです。その時までは・・・
違和感を覚えたのは、切った指が同じ指だった事に気づいたときです。
最初はたまたまかも思ったのですが、一緒に風呂に入った時、
指の断面図が私の
Name_Not_Found [sage] 2019/10/20(日) 16:07:16.17ID:???
jsとjquery
どちらでも代用可能なコードであればjsでインラインにした方が読み込み早いとかそういうことはありますか?
Name_Not_Found [sage] 2019/10/20(日) 16:08:12.74ID:???
当たり前だろ
Name_Not_Found [sage] 2019/10/20(日) 16:13:02.20ID:???
ありますが此処で聞いても良いことないので
自分で計測して判断しましょう
Name_Not_Found [sage] 2019/10/20(日) 17:40:21.35ID:???
仮引数も実引数も同一のものだろって言えるのはJS引数の仕様を知ってるからでは

仮引数に実引数が代入される(a=b)か複製されるかは言語仕様による
だからまぁ、初学者は暗黙に変数名変わったら参照を共有してないように考えやすいとは思う
Name_Not_Found [sage] 2019/10/20(日) 19:36:46.72ID:???
ちょっとしたスクリプトの検証のためにコピペしてブラウザのコンソールにぶっ込んで使ってるけど
constだと続けて同じコード実行すると定義済みですって怒られるからブラウザ更新するけどいちいちめんどいのですがどうすればいいですか
もちろん元コードをvarとかに書き換えるのはもっと面倒です
Name_Not_Found [sage] 2019/10/20(日) 20:14:31.05ID:???
貼り付けるコードの前に(()=>{
後ろに})()
を付けて実行する。
リロードより楽かは知らん
Name_Not_Found [sage] 2019/10/20(日) 21:31:55.11ID:???

絶対に間違ってはいけない考え方をやってしまっています
渡され方が渡されるものによって変わるということは不自然であり、一般的にありません
多くの言語では、渡され方は、渡し方、によって変わり、それが自然なのです

JSでも、プリミティブかどうかで渡され方が変わることはありません
そして、JSでは参照だの参照の値だのを持ち出す必要はありません
仕様書を愚直に読めば、全ての値が名付けの連鎖によって
例えばあなたに拓哉という名前だったりタッちゃんという名前だったりがあるように
あなたはあなたであり、他の何者でもなく、拓哉やタッちゃんがあなたという存在ではないですが、
あなたという存在を同時に共有して表すための名前という概念で変数を捉える事ができます

そのため、共有渡しという言葉がJSでは使われることがあります
ようするに1でも"Str"でも、それは別の名前がつけられる時複製されているわけではないのです
ただプリミティブ型は不変なため、コピーされていると考えても、同一存在だと考えても辻褄が合います
ですがわざわざ型によって渡され方が変わるなどの仕様書にない不自然な考え方をしなくとも
すべて共有渡しだと簡単に認識すればよいのです

ちなみに、実際のエンジンでも、SMIを除いてプリミティブ型でも参照の値渡しによって
メモリの同一データへの参照が伝播されていく実装になっていることが多いです
SMIを除いてプリミティブ型の多くはオブジェクトとして扱われています
Name_Not_Found [sage] 2019/10/20(日) 21:43:30.42ID:???
よく分からんから山田さんと田中さんで例えてくれ
Name_Not_Found [sage] 2019/10/21(月) 00:26:17.10ID:???
実態と理屈は別だから実用上は「全部同じ共有」ってだけの認識じゃ不便じゃね

let x = y = '初め';
x = '入れた'; // x === '入れた', b=== '初め' ✕変数の"値を弄る"、○変数の"値をすげ替える"……?参照先を共有してるとすると共有だけど対象は単体?

let a = b = [0];
a = {1}; // a === {1}, b === {1} ○変数の"値を弄る"、○変数の"値をすげ替える"……?参照先を共有してるとすると共有だから対象も連動
Name_Not_Found [sage] 2019/10/21(月) 01:02:59.09ID:???
は間違いの例ね
変数への再代入は、全く同じ参照先を持つ他の変数の参照先は変えない
Name_Not_Found [sage] 2019/10/21(月) 01:27:01.29ID:???

Node.js をインストールしているなら、

VSCode の拡張機能のQuokka.js で、
リアルタイムに値も表示される、スクラッチパッドとして使える

ただし、無料バージョンでは、保存したファイルからは実行できない
Name_Not_Found [sage] 2019/10/21(月) 01:37:49.69ID:???
const a = { x: "x" }
const b = { x: "x" }

上は、2つのオブジェクトを生成しているけど、

下のc は、オブジェクトを生成していない。
参照の代入だから、単なるエイリアス

const c = a
a.x = 1
console.log( c ) //=> { x: 1 }
Name_Not_Found [sage] 2019/10/21(月) 02:09:46.29ID:???
参照の代入ってなんだ?
参照値の代入って言いたいのか?
Name_Not_Found [sage] 2019/10/21(月) 10:03:05.20ID:???

インラインにしたほうが約数ミリ秒早い。
ただし開発効率が低下し開発時間がかかる。

お前が働いた時間でどれくらい金がかかるかわかるか?
それだけの金を使って1ミリ秒しか変わらなかったんだぞ!って言われてみ?
Name_Not_Found [sage] 2019/10/21(月) 10:05:56.78ID:???
そんなのチェックしないから大丈夫。
速くなるのか遅くなるのかの定性的な事実が重要。
Name_Not_Found [sage] 2019/10/21(月) 10:33:31.29ID:???
インライン/外部化は必要に応じて決定する

というか、開発効率を気にする奴はインライン化も機械化すると思うが
GoogleのHTMLが手で書かれてるわけない
Name_Not_Found [sage] 2019/10/21(月) 12:29:25.56ID:???
インライン化は最適化の基本
必要な所では勝手にされるので
開発者は自然に書くといい
Name_Not_Found [sage] 2019/10/21(月) 14:06:39.89ID:???
実行速度を気にしてる人は二パターンあって、
自分で速度を測って本気で速度を気にしてる人と
速度を測らないで速いかどうかの話をするだけのなんちゃってやろう

なんちゃってやろうは本気じゃない
俺はちゃんとしてますってふりしてるだけ
Name_Not_Found [sage] 2019/10/21(月) 22:34:15.62ID:???
速度を気にしてる人は2パターンあって、
限られた環境で限られたケースでのみたまたま今速かったものを心酔するバカパターンと
最速ではないが全てのモダンブラウザで速さが安定して早いWasmを使う賢パターンがある
Name_Not_Found [sage] 2019/10/21(月) 22:58:14.86ID:???
MECEになってないやり直し
Name_Not_Found [sage] 2019/10/21(月) 23:12:20.15ID:???
ttps://cloud.githubusercontent.com/assets/288977/8779228/a3cf700e-2f02-11e5-869a-300312fb7a00.gif
Name_Not_Found [sage] 2019/10/22(火) 10:48:40.36ID:???
forEach に対して value, index, array 以外の引数を渡す方法ってありますか?
Name_Not_Found [sage] 2019/10/22(火) 15:03:36.04ID:???

WasmでDOMサクセスができるブラウザはどれ?
Name_Not_Found [sage] 2019/10/22(火) 15:03:51.88ID:???
DOMアクセス
Name_Not_Found [sage] 2019/10/22(火) 17:53:58.80ID:???
薬用DOM
Name_Not_Found [sage] 2019/10/22(火) 19:44:35.21ID:???

ttp://https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
第二引数
Name_Not_Found [sage] 2019/10/22(火) 22:47:30.28ID:???

ありません
Name_Not_Found [sage] 2019/10/23(水) 07:13:03.03ID:???

Function#bind
Name_Not_Found [] 2019/10/23(水) 20:22:19.47:DajeXZAx
htmlとcssは出来るようになった

次はjavascriptかphpのどちらかをやりたい
どっちがオススメですか
Name_Not_Found [sage] 2019/10/23(水) 20:23:50.21ID:???

javascript
Name_Not_Found [sage] 2019/10/23(水) 20:26:58.13ID:???

同じくJS
ただJSスレでどっちが良いか聞いてもあんま意味ないと思う
Name_Not_Found [sage] 2019/10/24(木) 00:52:04.43ID:???

両方やる
お前に適切な方が自然と分かる
Name_Not_Found [sage] 2019/10/24(木) 16:57:06.03ID:???
俺の頭が低スペなんだろうけど
JSとPHP同時進行で書いてると混乱する
JSに$thisとか書いてエラー出してからハッとする
Name_Not_Found [] 2019/10/24(木) 17:52:00.63:rWJyRPYs
phpで何か作るならjavascriptは避けて通れないってマジですか?
結局javascriptはある程度勉強しなきゃならんのか
Name_Not_Found [sage] 2019/10/24(木) 18:06:48.16ID:???

別にそんなこともないと思うけど

現代的なウェブアプリケーションのフロントエンドを作る上で
JSを避けて通れないのはその通りだけど
Name_Not_Found [sage] 2019/10/24(木) 18:28:51.37ID:???
鯖専用で言語学ぶ非効率さを嫌うなら、利用者側をJavaScript・鯖側をNode.jsって選択肢あるね
どっちもJavaScriptで書けるし今だとPHPに劣らず熱いでしょ
Name_Not_Found [sage] 2019/10/25(金) 01:54:05.31ID:???
forEachの中でsetTimeoutを利用する場合、複数のタイマーが同時に動くと思うのですが、
clearTimeoutで1つ解除すると、まとめて解除されたりしますか?
何故か途中で処理が止まってしまうようです。
Name_Not_Found [sage] 2019/10/25(金) 06:50:58.16ID:???
まとめて解除されたりされなかったりする
Name_Not_Found [sage] 2019/10/25(金) 07:12:29.85ID:???

しない
Name_Not_Found [sage] 2019/10/25(金) 07:46:01.12ID:???
Ruby on Rails でも、Node.js, Webpack が必要

VSCode, jQuery, Babel,
gulp, npm scripts,
SASS, Bootstrap など
Name_Not_Found [sage] 2019/10/25(金) 12:39:09.34ID:???

ブラウザ依存
Name_Not_Found [sage] 2019/10/25(金) 18:20:07.28ID:???

解決法としてタイマーのIDであるsetTimeout()の戻り値をclearTimeout()に渡すのはどうだろう
Name_Not_Found [sage] 2019/10/25(金) 18:56:39.91ID:???

それ以外、clearTimeoutに渡す方法はないから、既知なのでは…?
Name_Not_Found [sage] 2019/10/25(金) 20:22:13.46ID:???
です。
されたりしなかったりで、ブラウザに依存するのですね。

スクロールするとフェードインするためのクラスを与えるという処理で、
横一列に並んだ要素を、一定の間隔でフェードイン表示させたいのですが、
リロードする度に、上手くいく数がマチマチで、且つ全部表示されることがないという
状態で、何が起きているのか把握できませんでした。

んが、色々試したところ、下記のように条件分岐の中にループ処理を
仕込んだところ、望んだ動作となりました。
このような使い方の場合、タイマーをクリアする必要ってあるのでしょうか?

var loop1 = function() {
if (...) {
setTimeout(loop2, 300);
}
else {
setTimeout(loop1, 16);
}
};
loop1();
Name_Not_Found [sage] 2019/10/25(金) 20:29:07.80ID:???
なんか問題は別にありそうな気がしてならんのだが
単体テストはしてみたの?
Name_Not_Found [sage] 2019/10/25(金) 20:36:52.67ID:???
そのちっちゃいコードでは何も分からんが
動いたんならめでたしと言うことで
Name_Not_Found [sage] 2019/10/27(日) 12:41:48.21ID:???
forEachを使うときって下のコードみたいに、スクロールイベントの中で
forEachを回して、添え字を関数に渡すべきなのか、
それぞれの関数でforEachを回すべきなのか、
どちらがパフォーマンスよいのでしょうか?

window.addEventListener('scroll', function() {
 test.forEach(function(value, index) {
  funkA(index);
  funkB(index);
});
});
Name_Not_Found [sage] 2019/10/27(日) 13:18:42.47ID:???
前者が配列一周回るのに対し後者は二周回るから前者のほうが速い気がするが、まあ関数呼び出しコストの違いもあるし計れば?
それより実行順は大丈夫なの?
ようするに、
前者は
a0 b0 a1 b1 a2 b2 a3 b3 …
後者は
a0 a1 a2 a3 … b0 b1 b2 b3 …
って感じで処理の実行順が異なってくると思うんだけど…
Name_Not_Found [sage] 2019/10/27(日) 13:46:13.00ID:???
スクロールイベントで総当たりループって事は最近のブラウザならIntersectionObserverで済むやつだったり?
Name_Not_Found [sage] 2019/10/27(日) 14:12:48.42ID:???
敢えて2回回す理由は無いと思うが
中途半端に切り取ったコードじゃ何も言えん
Name_Not_Found [sage] 2019/10/27(日) 15:44:42.87ID:???
ブラウザの最適化具合にもよるだろ
どっちのパフォーマンスが〜って言ってる時点で絶対気にしなくていいレベル
Name_Not_Found [sage] 2019/10/27(日) 16:05:28.28ID:???
パフォーマンスのためにはパッシブリスナにしてアイドルコールバックで少しずつ処理すべきだろ
Name_Not_Found [] 2019/10/30(水) 18:08:31.27:sKdkwOHZ
text = "abc"
としたときに text の中身をクリップボードに入れるにはどうすればいいんでしょうか?
Name_Not_Found [] 2019/10/30(水) 18:10:51.05:sKdkwOHZ
ttp://https://developer.mozilla.org/ja/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboard
ココ見ると
入力フォームがあることが前提になってますが
入力フォームなしでクリップボードにコピーすることはきょかされてないんでしょうか?
Name_Not_Found [sage] 2019/10/30(水) 18:48:19.00ID:???
入力フォームがなければ作ればいいじゃない
Name_Not_Found [sage] 2019/10/30(水) 19:13:35.44ID:???
mozillaのアドオンのAPIかよwww
Name_Not_Found [sage] 2019/10/30(水) 19:48:44.37ID:???

フォームでなくてもいいけどDOMツリー内にあって選択状態にしないとだめ
display:none等で隠してしまうと選択状態にはならないので、画面外やサイズ0で見えないように要素作るのがセオリー


document.execCommand("copy")は大抵のブラウザで使えますよ
Name_Not_Found [sage] 2019/10/30(水) 19:54:08.17ID:???
clipboard.js使えば異種・新旧のブラウザ間の実装差異吸収してくれるけどそれじゃダメなん?
Name_Not_Found [sage] 2019/10/31(木) 12:25:34.60ID:???
navigator.clipboard
Name_Not_Found [sage] 2019/11/02(土) 14:36:50.77ID:???
関数を書く順番でなやんでいます。

ファイルを読み込みながら実行する書き方だと
関数の中で関数を呼び出すには、入れ子の方を上に書く必要があり
自分で読み返したときに、どういった順番かわかりづらいことがあります。

DOMContentLoaded で読み込み完了後に実行する書き方であれば
上から順を追って書いていっても問題ないので、
自分としては読み返しやすいと感じています。

どちらが望ましいとかってあるのでしょうか?
Name_Not_Found [sage] 2019/11/02(土) 14:48:24.66ID:???
当然自分の分かりやすさより、どう実行されるかの方が優先度高い
DOM読み込み完了時に実行で良いならそれ使えば良いし、他の時機で実行するならそれに合わせた実装をしないと

そもそも関数定義と関数呼び出しは読んだ瞬間に判別できるようになった方が良い
その上で分かりやすい変数名付けて、大きすぎる関数は作らずに小分けした関数を入れ子にすれば、読む時に都合の良い順番なんて必要ない
Name_Not_Found [sage] 2019/11/02(土) 16:26:05.22ID:???

全ファイルを読み込み完了してから、実行するか
一つずつファイルを読み込み完了してから、実行するか

当然、後者の方が実行速度が向上する
Name_Not_Found [sage] 2019/11/02(土) 19:01:29.41ID:???

実行速度は一気に実行の方が速いでしょ
逐次実行にしてはやくなるのは開始時機の早さと、それで見込める終わる時機の早さ
Name_Not_Found [sage] 2019/11/02(土) 19:07:40.51ID:???
一気に実行するような時代ではない
まず第一にオフザメインスレッド
どうしてもメインスレッドで行わないといけない処理は
その優先度に基づいて小分けにして実行する
Name_Not_Found [sage] 2019/11/02(土) 19:09:54.42ID:???

それだと、ダウンロード中は待機しか出来ないんだが
Name_Not_Found [sage] 2019/11/02(土) 20:16:50.48ID:???

そうだよ
でもスクリプトの実行速度が上がる訳じゃないから初心者が混乱しないように言ったんだ
Name_Not_Found [sage] 2019/11/02(土) 20:25:44.33ID:???
数字が少ないのがユーザー体験にとっていいとは限らないしな
プチフリがあるよりちゃんと読み込み中の表現した中断の方がストレスないし
Name_Not_Found [sage] 2019/11/02(土) 20:35:14.47ID:???
vueのtransitionってclickやscrollイベントを割り当てることは不可能なんですかね?
Name_Not_Found [sage] 2019/11/02(土) 21:33:33.81ID:???
不易能
Name_Not_Found [sage] 2019/11/02(土) 22:00:28.24ID:???
var wmp = new ActiveXObject('MediaPlayer.MediaPlayer.1')
var a = document.createElement(wmp)
a.setAttribute('type', 'video/x-msvideo')
document.body.appendChild(a)
wmp.FileName=file_name
wmp.play()

音声は聞こえるんだけれど、映像がどこにも見えなくてわけわからんです。
スタイルいじってもダメなので、何か他に抜けているところがあるんでしょうか。
Name_Not_Found [sage] 2019/11/02(土) 22:33:56.70ID:???
ここぞとばかりに自分語りっすね
Name_Not_Found [sage] 2019/11/03(日) 00:47:05.39ID:???

待機時間が長い方を「速い」と主張するの方が誤解の元だと思うが
Name_Not_Found [sage] 2019/11/03(日) 01:01:45.59ID:???

速度/時機、速い/早い、をわざわざ対比して書いてるのに誤解の元になるって……
いきなり話に小学生の読み手が入ってくるとか想定してる?

少なくとも流れ見てたら誤解よりもむしろ理解に役立つ書き方でしょ
Name_Not_Found [sage] 2019/11/03(日) 01:46:46.59ID:???

ファイルの読み込みは遅いに決まってるでしょ
何のために非同期処理になっていると思っているんだ?
Name_Not_Found [sage] 2019/11/03(日) 02:07:59.99ID:???

は「ダウンロード処理」「ダウンロード後の処理」を合算した「全体の実行速度」の話をしているのに、後者のみに着目したコメントをされても困るよ
処理の単位を勝手に限定しないでくれ
(そもそも、初心者だと「実行速度=スクリプトの実行速度」と読んでダウンロード処理を除外するものなのか?)

一般にIO処理は遅いから、少しでも早く終わるように効率化した方が良いに決まってる
あえて、完了時刻を遅らせる理由があるなら、その理由を添えて質問者に回答してやってくれ
Name_Not_Found [sage] 2019/11/03(日) 02:42:58.67ID:???

それこそ元レスは前者にも後者にも限ってないし、違い全般を聞くような書き方をしてた
限定的な回答があったからもう一方の限定的な情報付け足した訳で、それに困惑する必要なんてない

そもそも初心者だと〜じゃなくて、初学者だからこそ手探り段階の可能性が大いにあるし、「できるだけ思い込みを植え付けない広い情報」を挙げた方が良いし他の誰も困らないでしょ

一般にどっちが良いかとか一言も言ってないし、推しを否定した事もない
それでもJavaScript実行中はレンダリングやら他の多くの処理が止まるから定期的に確実な切れ目を作るのは用途が無い訳じゃないし

もし不満があるなら教えて欲しい
触れられてない情報を付け足す事に誰が困るっていうの?違うなら噛まないで頂戴
Name_Not_Found [sage] 2019/11/03(日) 06:41:44.90ID:???
確かに、初心者だからこそ、JSやWebで気をつけないといけないことは真っ先に知っておくべきだろう
Name_Not_Found [sage] 2019/11/03(日) 12:30:32.20ID:???
です
読み込み完了後だと開始時機は遅くなるけど処理ははやい。
読み込みながらの場合は開始時機がはやく終了時機もはやくなる見込みがある。
そして、ケースバイケースで使い分けるといった感じでよろしいでしょうか?

関数の書き順なのですが、入れ子となっている場合、慣れてくると
下記の下の方でも問題なく読めるものなのでしょうか?

ご飯を炊く
おかずを作る
配膳する
食べる

食べる
配膳する
おかずを作る
ご飯を炊く
Name_Not_Found [sage] 2019/11/03(日) 12:46:52.16ID:???

>377とは前提条件が違うだけでどちらも間違ってはいない

逐次処理の方が「ダウンロード処理 + ダウンロード後の処理」の実行速度が速い
一括処理の方が「ダウンロード後の処理」の実行処理が速い

だが、の「実行速度は一気に実行の方が速いでしょ」はその前提を伏せて、一方的に377を間違いと断言しているので、新たな誤解の種を生んでいる
初心者は前提の違いに気がつかず、強い否定があれば「そうかもしれない」と思ってしまう
誤解をなくすには、お互いの主張が正しくなるよう、前提付きで2つの意見を列挙するのがベスト
補足するのは良いが、表現が適切ではなかった
Name_Not_Found [sage] 2019/11/03(日) 16:20:10.01ID:???

平たく言えばそうなるが……HTML側のダウンロードはJavaScriptの実行速度ではないからそこが少し不明瞭になるのも、それはそれでよろしくないのでは

というか「実行速度は〜」って表現は直後に、「JS処理を開始するタイミングが早まって全体の処理が終了するタイミングが早く見込める」という表現を推してる
前提を伏せたんじゃなく、前提と結果を噛み砕いたと思う
Name_Not_Found [sage] 2019/11/03(日) 16:31:38.43ID:???

「javascript activexobject mediaplayer」で検索!
Name_Not_Found [sage] 2019/11/03(日) 16:36:42.93ID:???

そうだね
特性が違うから使い分けるのもそうだし、内容によって分けて併用するのも十分あり


元レス見ると、関数の書き順ってのは関数定義の順番だよね?
そのご飯の例の場合は入れ子にはしないだろうから、そもそもその順番で書く意味がないと思う……だから慣れてても読み辛いだろうね

入れ子、例えば「炊き出しする・配膳する・献立を料理する・お米を炊く・おかずを作る・お米を盛る・おかずを盛る」の場合
お米を炊く = (){}  //定義
おかずを作る = (){}  //定義
献立を料理する = (){お米を炊く(); おかずを作る();}  //定義
お米を盛る = (){}  //定義
おかずを盛る = (){}  //定義
配膳する = (){お米を盛る(); おかずを盛る();}  //定義
炊き出しする = (){献立を料理する(); 配膳する();}  //定義
炊き出しする();  //呼び出し
みたいに書いても、慣れてると読みやすいと思う
実際には「炊き出し」→「献立」→「米炊く」→「おかず作る」→⋯⋯→「おかずを盛る」って順番で呼び出されるけどね
Name_Not_Found [sage] 2019/11/03(日) 16:42:35.91ID:???
の場合入れ子構造はこんな感じ
炊き出し
 ┣ 献立作る
 ┃ ┣ 米炊く
 ┃ ┗ おかず作る
 ┗ 配膳する
   ┣ 米盛る
   ┗ おかず盛る
Name_Not_Found [sage] 2019/11/03(日) 20:07:17.57ID:???
流行り廃りというものがあるからな
例えば一昔前はプリロードがプリレンダがベストとされてたけど、セキュリティ上の懸念がある事がわかって今じゃブラウザ皆力入れるの辞めちゃったし
そういうのを追って先を読む力が最も重要
Name_Not_Found [sage] 2019/11/04(月) 01:43:59.27ID:???


すっごいわかりやすく説明してくださり、ありがとうございます。
定義した関数を処理項目?ごとにまとめて呼び出すと読みやすいですね!
こちらを参考にして、組みなおしてみます。

正解が見えず手が止まってしまってましたので、本当に助かりました。
Name_Not_Found [] 2019/11/04(月) 03:39:26.81:gJZS2aki
IndexedDBと似た構造やしくみをもつNoSQLってなにかある?
Name_Not_Found [sage] 2019/11/04(月) 11:33:18.42ID:???
IndexedDBに似たものでいいなら好きなように軽くラップすればいいだけじゃん
機能が過剰で煩雑と思うのであればstd:kv-storage使えばいい
Name_Not_Found [sage] 2019/11/04(月) 12:32:52.43ID:???

の一行目は余計だったと思う
Name_Not_Found [sage] 2019/11/04(月) 12:36:38.77ID:???

初めのうちは処理を書き連ねたり1つの関数が大きくなったりなりがちだよね
でも今後もっと大きいプログラム書いていくと、それじゃどんどん肥大化して読み辛くなっちゃう

関数はどんどん部品に小分けしていくと良いから少しずつ慣れていこ
Name_Not_Found [sage] 2019/11/04(月) 12:37:59.58ID:???

1行目無いと2行目の内容が1つ前のレスと競合して意味分からんレスになるぞ
Name_Not_Found [sage] 2019/11/04(月) 14:52:06.37ID:???

1行目が前提無視の誤解の元だからね
Name_Not_Found [sage] 2019/11/04(月) 16:01:29.26ID:???

〉 「実行速度は〜」って表現は直後に、「JS処理を開始するタイミングが早まって全体の処理が終了するタイミングが早く見込める」という表現を推してる

前提無視じゃなくて前提を明確に区別したと思うんだけど……
対で全体になる前提の、片方だけ抜き取っちゃったらもう片方の前提が内包されないのは当たり前
そうじゃなくて、同じレスの中には全体に言及してる部分があるんだから併読するべきじゃ?
Name_Not_Found [sage] 2019/11/04(月) 17:07:29.28ID:???
はじめてのフロントエンド開発って本でReact入門始めたんだがfirebaseの設定という全く関係ないところで躓いた・・・
npx firebase serve --only functionsを実行すると
gyp ERR! node -v v10.16.3
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
node-pre-gyp ERR! build error
〜中略〜
node-pre-gyp ERR! node -v v10.16.3
node-pre-gyp ERR! node-pre-gyp -v v0.13.0
node-pre-gyp ERR! not ok
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! grpc@1.24.1 install: `node-pre-gyp install --fallback-to-build --library=static_library`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the grpc@1.24.1 install script.

って1つのエラーが消えない・・・
エスパーさん助けて!!!
Name_Not_Found [sage] 2019/11/04(月) 17:42:29.94ID:???
gypは鬼門。
これのせいでネイティブモジュールが大嫌いだった。
今はgypも問題ない環境になってるが、どうやって構築したのか分からん。
ブログにでも書いておくんだった。
ま、検索したら出てくるやろ。
Name_Not_Found [sage] 2019/11/04(月) 19:29:10.39ID:???

JSをよく知らないみたいだけど、
イベントドリブンだから始まりと終わりは明確とは限らないんだよ
Name_Not_Found [sage] 2019/11/04(月) 20:47:22.86ID:???

あやふや過ぎ、適当な否定なんてするんじゃないですよ
イベント駆動なのも記述したもの全てが漏れなく実行される時機が明確じゃないのも知ってるから、そのあやふやな指摘さえ間違い

そしてDOM読み込み以外のイベントで呼び出されるコールバックは今回の話には関係ない
複数のレスで想定されてるレンダリングブロックのような差異に影響しないんだから

むしろ本当に今回の話題の状況についてJSを理解できてないのはあなたじゃ?
Name_Not_Found [sage] 2019/11/04(月) 20:51:21.80ID:???
そもそもイベント駆動部分を考慮したら始まりと終わりの差異なんて考察できないだろうに……
文脈を読まなくても今回の話題は(DOM読み込み類を除いて)イベントハンドラは関係ないと判るはず
Name_Not_Found [sage] 2019/11/05(火) 06:55:05.67ID:???
うーん、かなり無理がある反論だね
自分の非は素直に認めたほうが印象いいよ
これでもう貴方の話は誰も信頼できなくなった
Name_Not_Found [sage] 2019/11/05(火) 08:19:14.92ID:???
で結論は出てるからなあ
その後の反論は見苦しいとしか思わない
Name_Not_Found [sage] 2019/11/05(火) 12:33:45.63ID:???
俺は知ってる、そういうつもりで言ったんじゃない、俺の心を感じろ
後付の言い訳ばかり
Name_Not_Found [sage] 2019/11/05(火) 14:29:25.32ID:???

本筋じゃない話を後からされたんだから後付けになるのは当然では?
その方向性なら後付けで元の方針を変えた時は叩くべきだけど、今回は当初から主張変えてない


反論じゃなくて一部の表現を否定してる
完全に同意しない意見は漏れなく全否定の反論だ、ってのは違うしそんなつもりもない

勘違いしてるからはっきりさせる
全体を否定する意見じゃなく、むしろその主張に従ってますよって方向性
の"結論・本筋の是非に影響しない"、「前提を無視して」という表現のみを否定してる
Name_Not_Found [sage] 2019/11/05(火) 14:41:06.32ID:???
もし「反論じゃないのか?じゃあ意見の本筋に文句が無いならややこしいから物申すな」って感じたなら、二元論になりかねない

正反対ではない意見なら、対立だけじゃなくて共存してる可能性も気に留めてもらえたら良いなとか思う
Name_Not_Found [sage] 2019/11/05(火) 19:09:36.98ID:???

意固地になって軌道修正しなくとも
そうだねで話は終わるんだよ

そんなつもりはないでは済まないのが現代の社会
受けてファーストだからよく覚えとき
Name_Not_Found [sage] 2019/11/05(火) 21:50:51.69ID:???

そうだね、よく思えとくよ

ただネット社会の書き込みでは
行間読んでそこに書いてる以上の先読みをするのも適切な事じゃない
Name_Not_Found [] 2019/11/05(火) 22:30:23.43:wJTHTe8X
業務系システムで使うJavaScriptに関するオススメ本を教えて頂けないでしょうか
Name_Not_Found [sage] 2019/11/06(水) 01:24:10.81ID:???
プロゲート、パイザとか一通り終わりましたがこの後どう勉強していけばいいでしょうか
Name_Not_Found [sage] 2019/11/06(水) 06:48:29.53ID:???

ネット社会でどのような発言や対応が炎上して
どのような立ち振舞がうまくいくかは
先人の例から分かってるでしょ

君が自分の好き放題行動するのは勝手だけど
それで最善の結果が帰ってくると思ってるのならお花畑
Name_Not_Found [sage] 2019/11/06(水) 08:17:25.32ID:???

何かを作れ
Name_Not_Found [sage] 2019/11/06(水) 16:15:51.44ID:???
HTML, SASS/CSS, jQuery, Bootstrap などを学ぶ

自分のPC に、VSCode, Node.js を入れる
Name_Not_Found [sage] 2019/11/06(水) 17:21:01.42ID:???

炎上しないで話をするのが目的のスレじゃない
だからあのレスもそんな目的のレスじゃない
初めから言ってるけど、右も左も分からないような初心者であっても、偏った情報を背負い込むことにならないようにという目的。まあ釣り合いをとっただけ

だから何故「噛みつかれたくないなら当たり障りのないレスを心掛けろ」って方向の説教をされてるのか疑問だし、それで非難される義理もない
Name_Not_Found [sage] 2019/11/06(水) 18:29:27.15ID:???
他者を否定するコメントで釣り合いがとれると思う理由がわからないけど、彼の中では納得出来る理由があるんだろうなあ
Name_Not_Found [sage] 2019/11/06(水) 21:53:54.33ID:???
何いってんだかね
当たり障りのないレスを心掛けるのは他者への最低限のマナーなのにね
上手く会話する気がないのならチラ裏にでも書いてろってね
Name_Not_Found [] 2019/11/07(木) 03:34:26.71:C9un/F0U
indexedDBって使いみちがよーわからんな

localStorageならコピペでも簡単にバックアップ取れるけど
IDBはそれができんし
Name_Not_Found [sage] 2019/11/07(木) 07:57:30.86ID:???
文字列しか入れられんからじゃ?
構造化データJSONで入れても全体ロードしてパースだろ
Name_Not_Found [] 2019/11/08(金) 08:40:47.74:RGHnYojg
クライアントサイドで完結する形態素解析器ってなんかないですかね?
ttp://http://chasen.org/~taku/software/TinySegmenter/
↑を見つけたけどこれだと分けるだけで 読み がないのでちょっとなりないかなぁと
Name_Not_Found [sage] 2019/11/08(金) 11:53:10.12ID:???
形態素解析のキモはデータにあるとして
そのデータは10MB以上あるが
それをクライアントにダウンロードさせるのか?
Name_Not_Found [sage] 2019/11/08(金) 12:29:23.67ID:???
Webアプリなんだから10MBや100MBくらい問題無いでしょ
ちゃんとキャッシュするっていう心づかいさえ守れば
Name_Not_Found [sage] 2019/11/08(金) 16:20:19.28ID:???
あったと思うけどパッと出てこない
家帰って見つかったら貼っとく
Name_Not_Found [sage] 2019/11/08(金) 20:00:49.11ID:???

ttp://https://github.com/takuyaa/kuromoji.js/blob/master/README.md
Name_Not_Found [sage] 2019/11/08(金) 20:12:59.70ID:???
演算子で !* ってどこかでみた記憶があるんだけどどんな意味だっけ
ためしにやったらシンタックスエラーでた・・
Name_Not_Found [sage] 2019/11/08(金) 20:30:22.32ID:???

記憶違い
Name_Not_Found [sage] 2019/11/09(土) 00:02:17.60ID:???
kuromoji.jsのほかにrakuten MAってのもあるけど何年も更新されてないな…
Name_Not_Found [sage] 2019/11/09(土) 12:25:03.61ID:???
イベントについて質問があります。
ロード後とスクロールをイベントとして利用する場合
スクロールをしてからにリロードをすると、ロードとスクロールの
イベントが2重で発火してしまっています。

そこで、ページトップとページの途中を判別したいのですが
何かヨサゲな方法はありますか?
Name_Not_Found [sage] 2019/11/09(土) 12:55:13.18ID:???
特定の要素からの、スクロール位置だろ

「javascript scroll 位置」で検索!
Name_Not_Found [] 2019/11/10(日) 00:50:12.41:HBEVi1UV
ラジオボタンのchangeイベント監視したいんだけど
選択状態を変えるとchangeイベントが二回発生するようで原因がわからない
なんで?
Name_Not_Found [] 2019/11/10(日) 00:57:22.96:HBEVi1UV
htmlは

<div id="radioButton">
<input type="radio" name="options" value="option1" id="option1">option1
<input type="radio" name="options" value="option2" id="option2"> option2
<div>

でJSが
document.getElementById("radioButton").addEventListener("change",function(){
console.log("changed")
})

で、ラジオボタンの選択をかえるとchangedが二回表示される。
divにリスナーつけてるからだめなのかと思って試しにid="option1"につけてみたけどやっぱ二回でる
Name_Not_Found [sage] 2019/11/10(日) 12:16:44.39ID:???
forEach内でvar宣言すると、無闇に宣言が繰り返されてしまうので
よくないのかなと思い、外で宣言するようにしているのですが意味はありますか?

↓の例の以外にも変数やら配列やら、モロモロ外で宣言するようにしています。
その場合、スコープの関係で変数が親スコープ?に大量に並んでしまい
少しわかり辛い気がしています。
なので、意味がないのであれば、forEach内で宣言するようにしたいと思っています。

@forEach内で宣言
test..forEach(function(value, index, array) {
 var func() {...};
 func();
}
A
var func() {...};
test..forEach(function(value, index, array) {
 func();
}
Name_Not_Found [sage] 2019/11/10(日) 12:39:06.86ID:???

すみません。追記です。
forEach内での関数のvar宣言をした場合配列の数だけ繰り返し宣言されてしまうが
呼び出しであれば、宣言は1回と考えていいのでしょうか?

また、変数や配列の場合forEach内で宣言させないことで、多少なりとも速度に影響はでるのでしょうか?
Name_Not_Found [sage] 2019/11/10(日) 13:34:21.80ID:???

1. と書いても、コンパイラの最適化で、2. ように展開してくれないのか?

さすがに何回も、関数宣言が実行されたりしないだろ。
無駄だから、最適化するだろ
Name_Not_Found [sage] 2019/11/10(日) 13:49:26.56ID:???

Windows10 で、Edge, Chrome で実行したが、正常に、1回ずつ表示される!
Name_Not_Found [sage] 2019/11/10(日) 14:18:37.32ID:???

何度も宣言しない代わりに参照時に何度も外のスコープを見に行く手間が発生するでしょ
だから無闇にそういうことを考えることが無駄
ESの仕様書をスラスラ読めるようになってから考えたら良い
Name_Not_Found [sage] 2019/11/10(日) 15:07:39.92ID:???

コンパイラなるものがあって最適化されるんですね!!
ググったのですが、難しくて理解できなそうでした


外のスコープを見に行く方が、何度も宣言するよりも処理に時間が掛かるのでしょうか?
であれば、内々で処理を行うのがベターなんですね。
Name_Not_Found [sage] 2019/11/10(日) 15:19:31.01ID:???
大差ないから自分が読み易いと思う書き方をしなさい
Name_Not_Found [sage] 2019/11/10(日) 16:27:36.59ID:???

なんと。。。
構成が結構変わってくるので、職場ではこっちが多数みたいのがあれば
ぜひ教えてくださいませ。
Name_Not_Found [sage] 2019/11/10(日) 17:59:49.52ID:???

ここで誰かがこっちの方が良いと言えば一生それに従うのか?
そういう言語もあるがJSでは言語としてこっちのスタイルが標準的という決めごとはない
JSは壮年期に差し掛かっているかもしれないがまだまだいくらでも成長する言語だ
流行は勿論気にし続けないといけないが、それと同時に自由に常に自分で模索し続けて
自分なりの様々な感覚を養っていくことがWebやJSにおいては重要
それにどっちが自然かなんて全体的な様子で変わる
Name_Not_Found [sage] 2019/11/10(日) 18:05:55.39ID:???

どちらかというと逆でしょ
普通はインライン化されて、関数の中身がforEach内に展開されて
さらにforEach内全体で最適化がかかる
でもそこまで最適化されることは実際には少ない

最近のエンジンはインタプリタ強化に回帰していて
省メモリとかオーバーヘッド削減に力を入れている
Name_Not_Found [sage] 2019/11/10(日) 22:07:04.25ID:???

自分とこの会社では、自分の周りは冗長な記述が多く参考にはならず、
違う部署の人はレベル違いで読み解けずといった感じでして。

今の主流を知りたいと思っています。
Name_Not_Found [sage] 2019/11/10(日) 22:34:20.34ID:???
昔は推奨された書き方が今では遅いなんてのが結構あるからね
ブラウザによっても逆転するから一概に言えない
Name_Not_Found [sage] 2019/11/10(日) 22:36:13.30ID:???
ESのバージョンも無しに今の書き方って言われても分かんない
Name_Not_Found [sage] 2019/11/11(月) 00:57:02.27ID:???

主流なんて無い
極論を考えれば全部グローバルに宣言を出すのも馬鹿らしいし、
最小限になるようできるだけ細かく多くのスコープを区切るのも馬鹿らしい
どちらにすべきかではなくて、バランスを取ってその時その時で全体的に自然に書けとしか言えん

比較演算子で定数をどちらに置くべきかとか、拘るのが馬鹿らしい問題というのは数多くある
そんなことにいちいち惑わされる暇があったら別のところに時間を使え
Name_Not_Found [sage] 2019/11/11(月) 01:54:01.43ID:???

極論についてはおっしゃる通りですね。
ESの仕様を理解はできていませんがバランスを見つつ改善を続けていきます。

関数やら変数の宣言って、最初の読み込み時にエンジンが把握するためのもので、
呼び出し時に宣言されるってことではないですよね?
それだとスクロールイベントで宣言した場合、毎回宣言されて大変ですよね?
Name_Not_Found [sage] 2019/11/11(月) 12:39:53.68ID:???
大変かどうかは計測して判断しましょう
Name_Not_Found [sage] 2019/11/11(月) 12:43:36.03ID:???
結局うやむやにしてるだけじゃん
不親切だな
Name_Not_Found [sage] 2019/11/11(月) 13:26:08.96ID:???
最適化は仕様にない。各社、自由だろ。
無数にある環境・ブラウザの組み合わせを、考えても無駄!

例えば「Effective Ruby、2015」の項目47 では、

ループ内で、文字列リテラルを使うと、
文字列が生成して、すぐに破棄されるから無駄なので、ループ外に出す

次に、Ruby 2.1 では、文字列リテラル.freeze で、
文字列は、1回しか作られないから、ループ内でも大丈夫

次に、Ruby 2.3 では、スクリプトファイルの1行目に、
# frozen_string_literal: true
と書くと、すべての文字列リテラルは、immutable になる

このように最適化は、ドンドン変わっていく!
Name_Not_Found [sage] 2019/11/11(月) 15:17:43.00ID:???
お前は相変わらずrubyキチガイだけどな。
Name_Not_Found [sage] 2019/11/11(月) 19:17:13.23ID:???

宣言文というのは、関数コンテキスト生成時と、コンテキスト実行開始(スコープ到達)時、宣言文到達時にそれぞれ働きがある
Name_Not_Found [sage] 2019/11/11(月) 19:38:11.34ID:???

そういうのどうやって勉強すりゃいいの?
es仕様直接読む頭ないから噛み砕いて説明してくれる本がほしい
Name_Not_Found [sage] 2019/11/11(月) 20:01:44.96ID:???
仕様書なんて英語の文章としては超絶簡単な部類
その大部分がa is b , b is cで積み重ねだから
読むために必要な能力って言ったら追っかけ力だけで
それは読んでれば勝手に身につく
Name_Not_Found [sage] 2019/11/11(月) 20:53:20.58ID:???

計ってみても誤差で判別がつきませんでした


難しそうですね
読み込んだ後は宣言なしと一緒とかだと理解できたのですがw

ちょろっと計測しても誤差にしかならないのなら、いっそスコープ狭めた方が
読み手には優しいですよね。
無理してネストを浅くして、気にしないといけない変数が大量にあるよりも。
馬鹿な自分でもわかる方がいいですし。
Name_Not_Found [sage] 2019/11/11(月) 21:03:37.71ID:???
その考え方でよい
実行速度にシビアな場面で初めて優先順位が変わる
Name_Not_Found [sage] 2019/11/11(月) 21:51:38.14ID:???
あと念の為補足すると
varはブロックに入れてもスコープは狭くならない
Name_Not_Found [sage] 2019/11/11(月) 21:59:50.38ID:???
letで宣言してスコープを関数内
に留めるのがいいかも
Name_Not_Found [sage] 2019/11/11(月) 22:08:01.71ID:???

宣言文というものはスコープに変数を作らないといけない
スコープが作られるのは宣言文より前のステップだ
だから実際宣言文に達する前にスコープを作る段階で働く
ステップが宣言文に達したらまた別の働きをする
他の多くの構文にもこのようにRuntimeな働きとStaticな働きと言うものがある
Name_Not_Found [] 2019/11/11(月) 22:12:37.18:3i8bCBWG
今のJS初心者なんで
とりあえずletにしとこ、程度なんだけど
constにすると大きく違うシーンってどんなのがありますん?

自分じゃない人がメンテするときに
不用意に上書きされないってのはいいとは思うんですが
Name_Not_Found [sage] 2019/11/11(月) 22:30:53.08ID:???

基本は、とりあえずletにしとこうではなく、とりあえずconstにしとこうだよ
letにしないとエラーが出るとこ以外はすべてconstにするんだよ
Name_Not_Found [sage] 2019/11/11(月) 22:40:55.94ID:???
基本は、オブジェクトは可能な限りfreezeかsealしなくてはならない
基本は、等価判定は可能な限りObject.isを使わなければならない
基本は、可能な限りaltJSで書かなければならない
Name_Not_Found [sage] 2019/11/12(火) 00:51:51.63ID:???

これ見るとJSはアホすぎて滅ぼしたほうがいいレベルだな
現実には生き残り続けとるが
Name_Not_Found [sage] 2019/11/12(火) 06:24:25.79ID:???
問題に神経質に対処しようとするのではなく
おおらかに問題を飲み込むコーディングができない人にはJSは難しい
Name_Not_Found [sage] 2019/11/12(火) 08:16:43.68ID:???

forEachの第三引数で渡せば良い
ttp://https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
Name_Not_Found [sage] 2019/11/12(火) 08:49:54.19ID:???

知りませんでした。
ありがどうございます。
Name_Not_Found [sage] 2019/11/12(火) 12:08:42.50ID:???

この文なんかおかしい。
いやletはブロックスコープで、関数直下に書くと関数スコープと一致するからそれはいいんだけどvarは関数スコープだから「letで宣言してスコープを関数内に留めるのがいいかも」って言及はなんか違う。
だってvarで書いても関数スコープなんだもん。
letの使用を推奨するのはいいんだけどその理由の説明が間違ってる。
467 [sage] 2019/11/12(火) 18:02:16.22ID:???

あ〜確かに
関数内でvarで宣言してもスコープは関数内に留まるね
勘違いしてたっぽい
Name_Not_Found [sage] 2019/11/12(火) 19:58:29.47ID:???
let it be
Name_Not_Found [sage] 2019/11/12(火) 20:20:09.80ID:???

forEachの第一引数がcallbackで第二引数がthisArgとあるが第三引数なんて出てないが。
Name_Not_Found [sage] 2019/11/12(火) 20:55:34.95ID:???
IE対応でletやらconstやらclass構文使えてないです。
その辺の理解が浅いと転職できないですか。
Name_Not_Found [sage] 2019/11/12(火) 20:56:33.77ID:???

Uncaught SyntaxError: Unexpected identifier
Name_Not_Found [sage] 2019/11/12(火) 20:57:02.62ID:???

babel先生のお世話になってみるのはいかが?
Name_Not_Found [sage] 2019/11/13(水) 07:09:05.57ID:???
letやらconstやらclass構文使えない環境で頑張ってきていたら
むしろスコープや定数やクラスシステムを振る舞いから表現まで気にして
JSのバックグラウンドにも詳しくなってるはずだから
それらの構文を扱うのに経験なんて必要なく知って数日で馴染めるでしょ
Name_Not_Found [sage] 2019/11/13(水) 07:59:56.13ID:???

× 第三引数
○ 第二引数
Name_Not_Found [sage] 2019/11/13(水) 08:45:59.65ID:???
それだとコールバックにアロー関数使えないな。
Name_Not_Found [sage] 2019/11/13(水) 12:19:59.94ID:???
アロー関数に拘る必要はないかと
Name_Not_Found [sage] 2019/11/13(水) 13:54:14.42ID:???
chromeで動いていた重いJavaScriptが
vivaldiだと落ちます
おそらく処理時間が長すぎるとタイムアウトを起こすようになってるんじゃないかと思いますが
ブラウザによってタイムアウトのメカニズムがあったりなかったりすると困りますよね?
処理時間が長くなる場合はsetTimeoutなどを使ってはじめから処理を細切れにしておくべきなのでしょうか?
Name_Not_Found [sage] 2019/11/13(水) 14:11:31.94ID:???
確保したメモリ使い果たしたとか
そういう話じゃないんだろか
Name_Not_Found [sage] 2019/11/13(水) 15:34:26.56ID:???

ありがとうございます
確かにメモリの問題だったようです
巨大な文字列を生成するのをやめたら動くようになりました
Name_Not_Found [sage] 2019/11/13(水) 22:59:57.87ID:???
今COTでScroll To Text使えるけど
これがデフォオンになったらいよいよjQueryとプラグインから卒業できるわ
Name_Not_Found [sage] 2019/11/14(木) 01:25:57.91ID:???
jQueryは使ってるけど、jQueryプラグインは使ってないなぁ
jQueryは自分で実装するのが手間だから使うものだよ。
プラグインのためじゃない。普段コードを書かない人なのかな?
Name_Not_Found [sage] 2019/11/14(木) 01:56:09.95ID:???
クリックイベントとかの元々の処理を無効にする記述って
どのタイミングで書くかで変わったりする?
重たいしょりが思いつかなくて計測しても違いがわかりません
下の奴です
e.preventDefault();
jQueryと違ってイベント発火直後がいいのかな?
Name_Not_Found [sage] 2019/11/14(木) 04:17:56.84ID:???
jQueryと違ってというが、元の処理を無効にする場合
jQueryの場合でもページのなるべく最初の方で
$(document).on('click, 'A', 〜
みたいにするってわかってるか?

$(function() {
この中に書いたりしないぞ
})

documentはJavaScriptが読み込まれるタイミングでは必ずあるので
DOMの読み込み完了を待つ必要はないんだよ。

だから$(document) にイベントを割り当てる場合、
ページの最初でやって問題ない。

その前提の話をしてるか?
Name_Not_Found [sage] 2019/11/14(木) 08:52:00.49ID:???

当然、バブリング、キャプチャリングフェーズのどこで発動するかによって、タイミングが異なる
だが、e.preventDefaultでイベントハンドラ実行を停止させる使い方は必要なプログラムまで停止させるリスクがあるのでやらない
フォームパリデーションでsubmit抑止など、デフォルトアクションを停止しなければならない時ぐらいだが、それで迷うことはあるまい
Name_Not_Found [sage] 2019/11/14(木) 09:03:18.14ID:???
> 必要なプログラムまで停止させるリスクが

んなもん、セレクタで絞り込むだけやん
Name_Not_Found [sage] 2019/11/14(木) 09:06:41.86ID:???
jQueryだと

$(document).on('click, function(e) {
 e.preventDefault();
});

で全部元の処理が無効になるが、これを特定のクラスが
ついたものにするなら

$(document).on('click, '.klass', function(e) {

こうするだけ。

たったこれだけが面倒だなんて誰も思わんだろ
Name_Not_Found [sage] 2019/11/14(木) 12:45:11.25ID:???
イベントハンドラ関数内のどこに書くかを聞いてるのだと理解したが
非同期処理しなければreturn前のどこに書いても一緒
当然非同期処理内やawaitより後はだめ
Name_Not_Found [sage] 2019/11/14(木) 18:55:08.63ID:???

例外や考慮すべき事柄が多い
高度な構造はそもそもjQueryで扱うのに適さない
jQueryは適当にざっくり処理するためのもの
Name_Not_Found [sage] 2019/11/14(木) 19:31:02.43ID:???
EventTarget.addEventListener()の第3引数のpassiveプロパティで分かりそうなもんだけどね
trueかfalseかで、event.preventDefault()の可能性の為に規定の処理を待機するかが決定されるってことはそういうことなんだなと
Name_Not_Found [sage] 2019/11/15(金) 07:13:03.31ID:???
これからは第三引数はオブジェクトを渡していくべき
Name_Not_Found [sage] 2019/11/15(金) 22:27:02.45ID:???

このようにします。
宣言が繰り返されることはありません。

let arr = [1,2,3,4,5];

arr.forEach((({
足す1 = n => n + 1,
掛ける2 = n => n * 2,
定数 = 42,
} = {}) => (value, index, array) => {
console.log(`配列${JSON.stringify(array)}の${index}番目の要素${value}に1を足して2を掛けて定数42を足した数は${掛ける2(足す1(value)) + 定数}です。`);
})());

出力:
配列[1,2,3,4,5]の0番目の要素1に1を足して2を掛けて定数42を足した数は46です。
配列[1,2,3,4,5]の1番目の要素2に1を足して2を掛けて定数42を足した数は48です。
配列[1,2,3,4,5]の2番目の要素3に1を足して2を掛けて定数42を足した数は50です。
配列[1,2,3,4,5]の3番目の要素4に1を足して2を掛けて定数42を足した数は52です。
配列[1,2,3,4,5]の4番目の要素5に1を足して2を掛けて定数42を足した数は54です。
Name_Not_Found [sage] 2019/11/16(土) 07:12:15.27ID:???
いい加減何万人月もかけて作られてこれでもかとお膳立てしてくれているブラウザ上で
細々したことに悩む馬鹿らしさに気がついたほうが良い
Name_Not_Found [sage] 2019/11/16(土) 10:07:05.84ID:???
要約:俺の分からないことは取るに足らないこと
Name_Not_Found [sage] 2019/11/16(土) 14:16:24.48ID:???
ブラウザ毎に精度違う可能性があるなら気に掛ける意味あるじゃん
何いってるのこの人
Name_Not_Found [sage] 2019/11/16(土) 15:02:58.67ID:???
ubntuってもとからnode入ってるんだな
システムで使ってるの?
Name_Not_Found [sage] 2019/11/16(土) 16:18:27.10ID:???

const厨だからクロージャ使うのでもこっちのほうがいいですわ
arr.forEach((() => {
const 足す1 = n => n + 1;
const 掛ける2 = n => n * 2;
const 定数 = 42;
return (value, index, array) => {
console.log(`配列${JSON.stringify(array)}の${index}番目の要素${value}に1を足して2を掛けて定数42を足した数は${掛ける2(足す1(value)) + 定数}です。`);
};
})());
Name_Not_Found [sage] 2019/11/16(土) 18:44:23.52ID:???

ここは実際に困ってる問題を解決するスレであって
心配性構ってちゃんの遊び場ではないから
Name_Not_Found [sage] 2019/11/16(土) 19:12:56.85ID:???
要約:俺の認めない話題は取るに足らないこと
Name_Not_Found [sage] 2019/11/16(土) 19:51:19.83ID:???
<img>要素のonclick使うよりadEventLithnerの"click"使ったほうがいいの?
どっちも同じですか?
Name_Not_Found [sage] 2019/11/16(土) 19:58:04.29ID:???
↓のようにif文の条件に当てはまってreturnするケースの場合
リサイズイベントが走りませんでした。
ロードの際に全部読み込むので、リサイズイベントは発火するものだと
考えていたのですが、実際は読み込むときも条件次第で到達できなければ
イベント登録されないということなのでしょうか。

var test = function() {
if (...) {
return;
}
window.addEventListener('resize', function() {
...
});
};
Name_Not_Found [sage] 2019/11/16(土) 20:06:52.01ID:???
なんで発火すると思ったか詳しく
Name_Not_Found [sage] 2019/11/16(土) 20:24:44.77ID:???

よくよく考えたら当たり前っぽい気がしてきました。
冷静に考えるとイベントリスナだけ特別ってなわけないですもんね。
イベントリスナまでたどり着けてはじめて登録されるってことなんですね。

上手くいかない箇所を探していたところ、まさかのまさかだったので
勢いで質問してしまいました。
Name_Not_Found [sage] 2019/11/16(土) 20:58:44.65ID:???
ええんやで
Name_Not_Found [] 2019/11/16(土) 22:55:18.99:UdZhIOrZ
public class Hero
String name;
int hp;
public Hero(String name,int hp){
this.name=name;
this.hp=hp;
}
public void heal(int sec){
this.hp=this.hp+sec;
}
public class Main{
public static void main(String args[]);
Hero h1= new Hero("zako",10);
Hero h2= new Hero("gomi",20);
h1.heal(2);
h2.heal(3);
Hero h3= h1;
h3.heal(7);
h1=h2;
h1.heal(11);
}
質問です 上記のプログラムを実行したらzakoとgomiのhpはいくらになりますか?(自分の解釈はzakoが34 gomiが 23になりました)
Name_Not_Found [sage] 2019/11/16(土) 23:44:52.83ID:???
あってるよ
君は君のままでいい
Name_Not_Found [] 2019/11/16(土) 23:55:59.86:UdZhIOrZ
?
Name_Not_Found [sage] 2019/11/17(日) 00:54:36.83ID:???

ttp://https://eng-entrance.com/java-javascript
Name_Not_Found [sage] 2019/11/17(日) 13:18:53.29ID:???
こいつキチガイか?
日本語が分からないから5chなんかに来るんだろうが
Name_Not_Found [sage] 2019/11/17(日) 21:13:04.69ID:???
zakoなのはjavascriptスレでjavaの質問をしてしまった自分だったと言う話。
自分が書いているプログラミング言語が何なのかも把握していないgomi
Name_Not_Found [sage] 2019/11/17(日) 22:56:28.14ID:???
「スッキリわかる Java入門 第2版、2014」の話は、
プログラム板のJava スレへ書き込んでください

Java・JavaScript は、異なる言語です!
Name_Not_Found [sage] 2019/11/18(月) 02:26:04.54ID:???
全部ネットスケープが悪い
Name_Not_Found [sage] 2019/11/19(火) 02:25:17.72ID:???
いい加減、jQueryは不滅ってことでいいですかね?
Name_Not_Found [sage] 2019/11/19(火) 07:46:23.50ID:???
いい加減、jQuey信者がうざすぎるんですが
Name_Not_Found [sage] 2019/11/21(木) 22:10:19.13ID:???
何度もすみません。
所作について質問です。

load・resize・scroll などのイベントリスナ内で、それぞれ同じ変数を用いる場合、
親スコープで変数を宣言して、それぞれのイベントリスナ内では値を格納するだけなのか、
それぞれのイベントリスナで変数を宣言をしつつ値を格納するべきなのか、
どちらが普通なのでしょうか?

イベントリスナ内で呼び出した関数の返り値を代入する変数を想定しています。
変数名は一緒です。
よろしくお願いします。
Name_Not_Found [sage] 2019/11/22(金) 02:51:13.71ID:???
お前のその言葉での説明でわかるわけ無いだろ
コードかけや
Name_Not_Found [sage] 2019/11/22(金) 19:59:39.77ID:???
load・resize・scroll で、共通の状態変数なら、関数の外で保持する
Name_Not_Found [sage] 2019/11/22(金) 22:18:56.04ID:???

JavaScriptは言語で書き方や構造を縛るような作りにはなっていないし
そう言ったことを主張するような中心的なコミュニティも存在しない
つまり「普通」などない
Name_Not_Found [] 2019/11/23(土) 12:12:06.92:B8e1wh48
<input type="number" id="test"></input>

var t = document.getElementById("test")
t.addEventListener("scroll",function(e){e.preventDefault();e.stopPropagation(); console.log("aa")},{passive:false}

↑でボックス上でスクロールしたらボックス内の数字をかえられるようにしたいのだが
テストで書いた↑のコードだと、コンソールにログもでないし、普通にスクロールもされてしまう。
なんで?
Name_Not_Found [sage] 2019/11/23(土) 12:20:02.54ID:???
ちっぽけな事に拘るなとは言わんが
ここに居る数人に聞くよりも100のコードを読み書きして
自分で研究した方がよっぽど良い結果を得られるとは思わないか?
Name_Not_Found [sage] 2019/11/23(土) 12:31:00.82ID:???
変数は関数内に閉じ込めてカプセル化したほうがモジュール性がたかまるのでいいい
Name_Not_Found [sage] 2019/11/23(土) 12:41:04.82ID:???
文書内を全文検索して特定の単語の位置を取得して
所定のボタンをおしたら順次移動(Ctrl+Fみたいなの)
みたいなのってJSでどうやればできる?
Name_Not_Found [sage] 2019/11/23(土) 12:52:29.74ID:???
いまどきのPCは性能がいいので
よっぽどでかいデータを大量に出し入れするんじゃなけりゃ
そんなの気にしないでいい
Name_Not_Found [sage] 2019/11/23(土) 14:53:17.82ID:???

失礼しました。
各イベント内で同じ関数を実行し、その返り値として真偽値を受け取りたいのですが
値を代入する変数をどのように管理するかで悩んでいます。
@イベントの親スコープで宣言する
A各イベント内で宣言する
変数のスコープを狭めるには後者だと思うのですが、同じ名前の変数を何度も宣言する
記述を今のところ見たことがないため質問しました。

↓は@の例です。
var test = function() {
 var returnValue;
 var commonFunc = function(){...};
 window.addEventListener('resize', function() {
  returnValue = commonFunc();
   ...
 });
 window.addEventListener('scroll', function() {
  returnValue = commonFunc();
 ...
 });
};


状態変数をはじめて知りましたので調べてみます。


普通と言いますか、現役の人達はだいたいがこう書いてるからこうしとけ的なのが知りたいです。
Name_Not_Found [sage] 2019/11/23(土) 15:13:04.64ID:???
関係がないなら変数の使い回しはするな
varは使うな。constを使え。letは甘え
現役の人はだいたいjQueryを使ってる。
Name_Not_Found [sage] 2019/11/23(土) 15:18:44.60ID:???
現役の人はだいたいvar使ってるんじゃね?
Name_Not_Found [sage] 2019/11/23(土) 15:18:49.81ID:???
状態保存したり、他から参照する必要があるなら外で宣言
関数内だけで完結できる変数なら中で宣言しとけ。わざわざ外で宣言して同じ変数使い回してたらバグの温床になりかねない
Name_Not_Found [sage] 2019/11/23(土) 15:29:49.47ID:???
IE11ですら不完全ながらlet,const使えたのにsafari9以下が足を引っ張ってたのがね
Name_Not_Found [sage] 2019/11/23(土) 16:06:40.89ID:???
ふつーバベる。
Name_Not_Found [sage] 2019/11/23(土) 16:54:40.53ID:???
変数は必要ない限り関数中に閉じ込めるのが基本って何回言えばいいんだよw
Name_Not_Found [sage] 2019/11/23(土) 17:06:49.82ID:???

変数の名前を全て管理する自信があるなら何やったって良い
ちなみに見たことが無いのは職場環境の問題
Name_Not_Found [sage] 2019/11/23(土) 17:31:50.44ID:???

@の書き方で良い
今回の場合、returnValueはcommonFuncに関係しているから、
commonFuncを外に出す以上、returnValueも外に出すのは十分に自然で
ニュアンス的に意味のある行為なのでその細かいセンスは自信を持って良い
Name_Not_Found [sage] 2019/11/23(土) 20:21:50.89ID:???
ノベルゲーム作っているのですが、
各選択肢の先をportalタグで持っておいて、
ある程度portalタグ内を読み勧めたら完全に遷移して後戻り出来なくしたいのですが、
portalが切り替わるエフェクトモーションの挙動というかそのあたりの調整ってJSでどこまでできるのでしょうか?
Name_Not_Found [sage] 2019/11/23(土) 20:46:03.35ID:???
jquery使わないでJSONファイル読み込むにはどうやりますか?
Name_Not_Found [sage] 2019/11/23(土) 21:10:28.94ID:???
const parsedObject = JSON.parse(JSON文字列);
Name_Not_Found [sage] 2019/11/23(土) 21:12:26.96ID:???

いやその前のファイル読んで
JSON文字列にするところが知りたいです
Name_Not_Found [sage] 2019/11/23(土) 21:23:07.70ID:???

const response = await fetch(url);
const json = await response.json();
ある程度古い環境にも対応させるならXMLHttpRequestで
Name_Not_Found [sage] 2019/11/23(土) 21:30:39.63ID:???

fetchって同じディレクトリにある.jsonファイルも開けます?
Name_Not_Found [sage] 2019/11/23(土) 22:35:04.98ID:???
はい
Name_Not_Found [sage] 2019/11/23(土) 22:36:27.16ID:???
どうして既に知ってることを聞くんだろうな
そんなに人と話したいのか?
Name_Not_Found [sage] 2019/11/23(土) 22:59:33.35ID:???

普通に、上下矢印キーで、数字が変わる!

preventDefault, stopPropagation の意味を勘違いしているのでは?
Name_Not_Found [sage] 2019/11/23(土) 23:34:23.83ID:???
インプット要素はどんなUIが設定されているか分からないのに
介入しようという時点で間違っている
Name_Not_Found [sage] 2019/11/24(日) 00:39:25.13ID:???

スクロールってもしかして入力欄上のマウスホイール操作の事か?
scrollじゃなくてwheelイベントやで
Name_Not_Found [] 2019/11/24(日) 02:17:47.85:SD854kCe

まじか
調べるのでちょとまて
Name_Not_Found [sage] 2019/11/24(日) 07:15:11.87ID:???

ttp://https://jsfiddle.net/x9brq8e0/

jQuery で作った

span タグのクラスの付け外しで作ったけど、
<br> を使っているから、検索ワードに、これらが入るとバグる。
色々な文字実体参照などでもバグりそう

p タグの中には、他のタグが無い方が安全

これは、解決は難しい。無理
Name_Not_Found [sage] 2019/11/24(日) 09:30:58.27ID:???
addEventListenerの3番目の引数のfalseって何なん?省略してもいい?
Name_Not_Found [sage] 2019/11/24(日) 10:56:35.43ID:???
trueにするとき以外は省略していいよ
Name_Not_Found [sage] 2019/11/24(日) 12:55:31.94ID:???

おお、できた!
サンクス!


どゆこと?
Name_Not_Found [sage] 2019/11/24(日) 13:03:05.82ID:???

Webはスマートウォッチから冷蔵庫まで参照するもので
input系のタグはそれぞれのデバイス・OSに合わせて
ブラウザが自身のポリシーを反映させたデザイン・UIを
練りに練って用意してるのだからうかつにそこに介入すべきではない

弁当を買ってきて調理し直してまた売りに出すようなもので
奇怪で高等テクニックだからオススメしない
Name_Not_Found [sage] 2019/11/24(日) 13:24:56.22ID:???
個人の思い込みではないかな。
値への介入ならReactなんかもしまくってるし、UIに応じた操作をと言うなら
inputタグだってwheelイベントだって抽象化されたものだし。
Name_Not_Found [sage] 2019/11/24(日) 13:49:51.89ID:???

ホイールの向きにしたって見た目がテキストボックスなら上方向で数字が戻るのが自然だとしても
見た目がドラムホイールなら上方向で数字が進むのが自然かもしれない

現実的にもドラムホイールUIが採用されることがままあるスマホやタブレットに
マウスを接続することだって十分に考えられるがその程度のことだって判別や調整が困難

だからtype=numberという抽象度のかなり高いものを使いつつ
そこに介入しようというのは相当奇怪で高等なテクニックということができる

それならばまだ、抽象度の低い部品で1から好きな入力フォームを組み立てて
俺のサイトではブラウザ様が用意した心のこもった便利さは排除するので
俺が作った使いにくいUIを使えと押し付けるほうが良いと個人的には思う
Name_Not_Found [] 2019/11/24(日) 15:46:36.63:SD854kCe

クロム拡張なので問題ないかな
Name_Not_Found [sage] 2019/11/24(日) 16:11:30.53ID:???
Chromeは一度フォーカスすればホイールで変えられるがそれでは駄目なのか?
ttp://https://jsfiddle.net/Mottie/bLp69rt4/
Name_Not_Found [sage] 2019/11/24(日) 16:12:54.91ID:???
Webアプリにはそれぞれの特質があって
どう言う場面でどういうデバイスからアクセスするとかは
その特質によってたいてい決まってくるもん

冷蔵庫とかスマートウォッチからアクセスがあることは統計的にはほぼ生じないなんてことも
そのアプリが持つ「文脈」を考えないと一概にはいえないとおもうが?
Name_Not_Found [sage] 2019/11/24(日) 16:19:43.98ID:???
👇なんで途中で端数が出てきたりするの?

n=0
0
n+=0.1
0.1
n+=0.1
0.2
n+=0.1
0.30000000000000004
n+=0.1
0.4
n+=0.1
0.5
n+=0.1
0.6
n+=0.1
0.7
n+=0.1
0.7999999999999999
n+=0.1
0.8999999999999999
n+=0.1
0.9999999999999999
n+=0.1
1.0999999999999999
n+=0.1
1.2
Name_Not_Found [sage] 2019/11/24(日) 16:21:39.60ID:???
冷蔵庫ってなに?
Name_Not_Found [sage] 2019/11/24(日) 16:21:49.55ID:???

自分が言ってるのは、ブラウザの提供する部品を最大限活かしてありのまま使うのが5で、
FlashチックにCanvasと素朴なイベントで全部UIを0から作り直して提供するのが1としたとき、
CSSで少しカスタマイズするくらいの4は混乱がほぼないし、
カスタムエレメントやHoudiniを駆使して独自の世界を作り上げたら
それはウザいかもしれないが、ユーザーはウザいサイトだということが分かる

でも今やろうとしていることは一番中途半端な3であって上手く使えば良いとこどりができるが、
失敗すればブラウザが提供している良さは消えて、こちらが提供したいものも正しく発揮できない結果になるよ
ということ
Name_Not_Found [sage] 2019/11/24(日) 16:28:55.70ID:???

10進数で小数点以下一桁で表せる数の多くを2進数では有限の桁数で表すことができない
0.1→1/16+1/32+1/256+...
正確に表せるのは
0.5→1/2
だけで他に狂ってないように見えるのはたまたま
Name_Not_Found [sage] 2019/11/24(日) 16:40:14.30ID:???
対象のデバイスが違えば同じ記述じゃ間に合わないから@mediaで切り替えるなんて
Webじゃ当たり前に行われていることだろう。

もし冷蔵庫で動かす可能性が出てきたらそのとき考えればいいだけのこと。
冷蔵庫にwheelが無かったとしてもキー入力ができるならそれでいいわけだし、逆に
キー入力もできない環境も想定しろなんて言われたら input type="text" すら
考え直さなきゃならん。
Name_Not_Found [sage] 2019/11/24(日) 16:45:03.52ID:???
対象のデバイスが違っても同じ記述でおおよそ間に合うように作られてるのがWebなのに
そこを壊しかねない行動は控えるべきかどうかという話がされているのでは?
結局全部に1つずつ対応するのが良いと思ってるのは君しかいないと思うよ
Name_Not_Found [sage] 2019/11/24(日) 16:59:30.47ID:???

0.1を2進数で正確にひょうげんできないってのは
なんとなくわかるけど
なんで 時々 端数が出てくるの?
Name_Not_Found [sage] 2019/11/24(日) 17:03:27.94ID:???

2進数で正確に表現できていれば、つまり2進数で有限の桁数で表されていれば
10進数でも有限の桁数で表すことができ、つまり表示が崩れない
だけど、その逆は成り立たないのは先に説明した通り
だから、10進数表記を2進数の値にするときに最終桁で丸められて
誤差を含んでしまっているから、それを10進数表記に直した時にその誤差が見える
Name_Not_Found [sage] 2019/11/24(日) 17:15:42.45ID:???
同じ記述で全部まかなえたらいいというのは作る側の都合だわな。
それで済ませるためにデスクトップでモバイル向け画面見せられたらユーザーはたまらんな。
Name_Not_Found [sage] 2019/11/24(日) 17:27:35.80ID:???
それを否定することは効率化の否定だろう
今現代この世に溢れてる物はオンリーワンのオーダーメイドのものの方が少ない
それでも十分によく万人向けに作られたものは多くの人にとって
誰に向けて作られたのか分からないエゴの塊よりも使い勝手は良い

それにお下の面倒まで見ないといけない赤ちゃんではないのだから
ユーザーはあるものをあるものなりに使う
むしろ、ほらお前はこういうのが良いんだろうと押し付けられる方が
ユーザーにとってはたまらないという場合だってある

0か1かでしか考えられない奴って
Name_Not_Found [sage] 2019/11/24(日) 17:40:06.90ID:???
森羅万象この世に存在するすべてのデバイスからのアクセスを
余すことなく完璧に対応するべきってこと?

違う気がする…
Name_Not_Found [sage] 2019/11/24(日) 17:47:18.36ID:???
>0か1かでしか考えられない奴って

「介入すべきでない」とか言ってる人のこと?
Name_Not_Found [sage] 2019/11/24(日) 17:52:58.71ID:???

いみわからないね
ビジネスでやるなら
メインのターゲット向けに開発するのが当然だがな
0.1%の例外をあいてに何をもとめるんだってはなしだな

どのあたりが0か1なの?
Name_Not_Found [sage] 2019/11/24(日) 17:54:33.23ID:???
で、冷蔵庫ってなに?
Name_Not_Found [sage] 2019/11/24(日) 17:58:53.21ID:???
const とか let とか宣言すると、宣言してるな!ってパット見でわかるのですが
空のオブジェクトを宣言した後に、離れたとこでひっそりとプロパティを追加されると、
追加されたかわかり辛いです。
どうにかする方法はないでしょうか?
Name_Not_Found [sage] 2019/11/24(日) 18:01:03.16ID:???

ここはビジネス板ではない
自らJSを学ぶ人のためのスレ
ビジネス相談や依頼はお金を払ってビジネスでやれ
Name_Not_Found [sage] 2019/11/24(日) 18:01:27.38ID:???

最初ににプロパティをつくらせて
事後にプロパティついかさせないようにすればよくね?
Name_Not_Found [sage] 2019/11/24(日) 18:03:24.44ID:???

ビジネスでやらないならもっと森羅万象のデバイスにに対応する必要がなくなるが?
趣味なんなら想定したデバイスだけに対応させればいいだけ
なんで趣味でやるのに森羅万象にたいおうさせるひつようあるのか?
言ってることが逆
Name_Not_Found [sage] 2019/11/24(日) 18:03:51.58ID:???
エロ動画サイト作るときに、冷蔵庫で動画流しながらオナニーする奴のことなんて
誰も考慮しねーよバカってことですか?
アヘ顔認証でwheelイベント発動ってことですか?
Name_Not_Found [sage] 2019/11/24(日) 18:04:53.95ID:???

するか普通?
冷蔵庫でおオナニーなんだよw
Name_Not_Found [sage] 2019/11/24(日) 18:05:17.36ID:???

落ち着きなさい
森羅万象に対応させる必要があるなんて誰も言っていないでしょ
周りをよく見なさい
Name_Not_Found [sage] 2019/11/24(日) 18:05:57.03ID:???

Proxyにしとけば追加されたとき分かる
Name_Not_Found [sage] 2019/11/24(日) 18:06:46.94ID:???

じゃあ何をいってんの?
趣味なら事前にかってに想定したデバイスに対応したアプリでいいじゃん…
金もらってないならあれやこれや想定してないデバイスに対応させる必要あるんかいな。
言ってることがわからないね
Name_Not_Found [sage] 2019/11/24(日) 18:08:47.74ID:???
冷蔵庫でオナニーてなに?
Name_Not_Found [sage] 2019/11/24(日) 18:09:16.42ID:???
inputフィールドの内容をwheelイベントで変更するってだけの話がえらい横道に逸れたな。
Name_Not_Found [sage] 2019/11/24(日) 18:14:52.30ID:???

君がどの発言に対してコメントしているのかわからないけど、
「0か1かでしか考えられない奴って」という消し忘れた書きかけの言葉に対してどういう意味かと言ってるのなら、

全てのデバイスに完全に対応することはそもそもWebでは不可能なことで、
だからと言って何も考えないで良いわけでもないというようなことを書こうとしてたときの名残

ちなみに自分はだけどではないからね
Name_Not_Found [sage] 2019/11/24(日) 18:18:27.83ID:???
そもそもtype=numberはマウスホイールで数値変更できるでしょ
Name_Not_Found [sage] 2019/11/24(日) 18:32:24.68ID:???
を流さないでください!!
Name_Not_Found [sage] 2019/11/24(日) 18:35:50.68ID:???

森羅万象に対応さろって印象うけるが
森羅万象に対応させないなら
切り捨てるものと切り捨てないものの線引きはどうするの?
冷蔵庫はなぜ切り捨てられなかったの?
よくわからん
Name_Not_Found [sage] 2019/11/24(日) 18:36:35.11ID:???

もう回答いくつか出てるじゃん
それらを試してみてまだ何かあれば続きをやろうね
Name_Not_Found [sage] 2019/11/24(日) 18:42:39.14ID:???

ひょっとしての話?それならよく全文や話の流れを見なよ
冷蔵庫にも対応しろって話では全く無いでしょ

例えばスマートウォッチや冷蔵庫という極端なデバイスであっても
最低限きちんと使える状態のUIをブラウザがinput要素には提供してくれてるのに
そのわざわざ各デバイス向けにカスタマイズされてるものに介入するのは高等テクニックだよと言ってるだけでしょ
Name_Not_Found [sage] 2019/11/24(日) 18:44:32.77ID:???
が深く考えないで雰囲気でマウントとりに行ったらいろいろツッコミが入って、
それを取り繕おうとしているってところだろう。
Name_Not_Found [sage] 2019/11/24(日) 18:47:09.89ID:???

まずIDでないのに全文のながれくむとかむりだから
全文の意味くみとってほしいならIDさらせよ

つぎに冷蔵庫に対応しろって話じゃないなら
何が言いたいの?
冷蔵庫で使わなないら
冷蔵庫の話を出す意味がわからない

せべきではない、っていってるが
それはやるなって話でしょ?

いみがわからない
つか冷蔵庫ってなによ?
Name_Not_Found [sage] 2019/11/24(日) 18:54:54.06ID:???

いや、全文っていうのは1レス全文のことだよ
冷蔵庫ってのは今どきレシピを見るためにインターネットに繋がってWebViewをもった冷蔵庫も考えられるでしょ
っていうイメージだったけど、そこで混乱を招いたのなら謝る

何が言いたいのかって、input要素、それもnumberという
デバイス毎に独自のUIが提供されそうなものに介入するのは控えた方がいいよって話を
何人かから返信が来たから具体例を交えたり言い回しを変えつつずっとしてただけだよ?
Name_Not_Found [sage] 2019/11/24(日) 18:56:26.59ID:???
言葉足らずと思い込みの喧嘩はもう見飽きた
Name_Not_Found [sage] 2019/11/24(日) 19:35:15.83ID:???

冷蔵庫でレシピを見るあぷりって
限られてるでしょ
そういうアプリなら冷蔵庫に対応すればいいだけでしょ
なぜそれを前提にアプリ作るのかって話なー

つか冷蔵庫アプリってなんやねん…
特殊すぎるわw
Name_Not_Found [sage] 2019/11/24(日) 19:49:56.68ID:???

いやだから少なくとも自分は冷蔵庫に対応するしないの話はしていないから
input要素って色んなデバイスに合わせてカスタマイズされてるっていう話での
「色んなデバイス」の1つの例として挙げてるだけでしょ?

むしろ、デバイスの特質やOSのスタイルに合うようにブラウザが良きに計らってくれてて
対応とかあまり気にしなくて良くしてくれてるのに、そこに介入するっていうのは高等テクニックだよ
っていう話であって、君の立場と自分の立場って近いと思うよ?
Name_Not_Found [sage] 2019/11/24(日) 20:21:53.20ID:???
例を挙げるとその例に囚われてしまう人あるある
Name_Not_Found [sage] 2019/11/24(日) 20:23:40.25ID:???
あるグローバル変数が、特にnullを代入する処理を書いていない箇所で唐突にnullになってしまうという現象に遭遇しています。
(DevToolでWatchしていると同じような箇所でnullになる、再現性はあるがnullにならないこともある)

その変数は一連の処理が終わったらnullを与えてGCを促し、再度処理を行う場合は改めて初期化して処理を開始する、という使い方をしています。
もしかしたら、nullを代入してGCを促したグローバル変数に対して実際にGCが行われる前に再度参照を与えた場合でも、GCが行われて強制的に破棄されてしまうのではないか、
と考えたのですが、こういった件に関してなにかご存じの型はいませんか?

また、メモリ節約のために上記のようなことをしているのですが、他に適切なやり方等あれば教えていただきたいです。
Name_Not_Found [sage] 2019/11/24(日) 20:30:04.99ID:???
悟りマウントオジさんってこと?
Name_Not_Found [sage] 2019/11/24(日) 20:32:43.92ID:???
仮にエンジンの不具合で参照が残っているのにGCされても、その変数がnullになることはない
変数というのはSMIを除いて全てオブジェクトとして管理されている
変数はタイプ情報を参照し、文字列やArrayのような不定長の値そこから何段か経て中身が参照されている
中身が破棄されたり上書きされてもその構造上ObjectがNullに化けることはない
Buffer系やファイルへの参照などはその中身がネイティブによって捨てられたり別スレッドへ移譲が起きていつの間にか空になることがあるが
いずれにせよ変数の型が直接変わるようなことは起きない
Name_Not_Found [sage] 2019/11/24(日) 20:41:36.58ID:???



だからそのいろんなデバイスの一つとして冷蔵庫出してるんでしょ?
いろんなデバイスってのってのは現実世界でかならずそんざいするわけで
そのいろんなデバイスにたいおうさせるひつようあるのかってはなしじゃないのかよ?

じゃあさきくけど
冷蔵庫はなんでだしたのよ?
例でなにをいいたかったの?

冷蔵庫に対応させる必要ないあぷりなんてとうぜんあるわけで
それが冷蔵庫だろうが ****だろうがいっしょだよw
例が下手すぎるんじゃないのか?
Name_Not_Found [sage] 2019/11/24(日) 20:44:37.42ID:???
で、冷蔵庫って何を想定してるの?
いつまで立ってもこれに対する回答ないんだが。
なんで?
回答ないってのは稀有な自称にも対応させろって意味にしか思えないんだが?
なんで冷蔵庫だしたの?
まずこれに答えて
Name_Not_Found [600] 2019/11/24(日) 20:54:12.18ID:???
自分は答えられないので、他の方、どうかよろしくおねがいします。
600 [sage] 2019/11/24(日) 20:55:25.16ID:???
== です
さんも誰に答えて欲しいのかレスを降ってください
Name_Not_Found [] 2019/11/24(日) 20:59:02.01:SD854kCe

じゃあIDさらして…
600 [sage] 2019/11/24(日) 21:00:50.64ID:???

やっぱり自分ですか?他所でやりましょ
お風呂入ってくるのでもっとスムーズに2人で会話できるような場を用意しておいてください
Name_Not_Found [] 2019/11/24(日) 21:05:18.50:SD854kCe

IDはさらないのか。。。
だめだな
Name_Not_Found [sage] 2019/11/24(日) 21:07:41.20ID:???

ありがちなのは他の何かと名前がバッティングしてる、非同期でnull入れたあたりか
Name_Not_Found [] 2019/11/24(日) 21:09:37.80:SD854kCe
レスの対象をいいなさいというがIDは晒さない
冷蔵庫がいったいなんなのかもわからない
正直よくわからんね
Name_Not_Found [sage] 2019/11/24(日) 21:20:14.75ID:???

もうここから先はあなたと私の1:1のおしゃべりでしかありませんからね
場を汚すのが恥ずかしいので私はここで続ける気は起きません

もしも、私の例の挙げ方、説明の仕方が悪いというような指摘であれば、
それは全面的に受け入れて非を認めます
それ以外に内容について詳しく議論したいというのであれば、別の場を用意してくれませんか?
今日中に用意してくださればそちらに移行します
以上です
Name_Not_Found [] 2019/11/24(日) 21:33:52.23:SD854kCe

なんでココで鼻だめなの?
なんでIDを晒さないの?
冷蔵庫って何?
一切答える気はないの?

あなたが別の場所希望するならあなたがそれを容易すべきでは?
なぜココではだめなの?
???しかないよ

でなんでIDさらさないの?
Name_Not_Found [] 2019/11/24(日) 21:34:50.84:SD854kCe
場をよごすって技術的な話をすることがなぜ場を汚すことなのかもよくわからない
Name_Not_Found [] 2019/11/24(日) 21:37:42.39:SD854kCe
技術的な話をするのになぜ1;1なのかもよくわからない
他者の意見からにげてるだけでは?
Name_Not_Found [sage] 2019/11/24(日) 23:03:52.04ID:???
なぜここでは駄目なのか、なぜ場を汚すと考えるのかと言うと
あなたは既に私がしっかり返答したと思っていることについて幾つも突っ込んできているため
改めて問題を整理してじっくり腰を据えてあなたと邪魔の入らないところで面と向かって
何度も何度も長文でお話する必要があると判断したからです

私はもはや技術的な話だとは考えていません
これは私とあなたの意思疎通の問題でしかありません
私は新たな技術的な話をする気は毛頭ありません
それ以前の問題として、私が過去に書いた文章をあなたに伝えることができるのかという興味からの提案です

逃げていると捉えてもらっても結構ですし、その他私のことをどのように考えてもらっても構いませんが
私はここでこれ以上続ける気はなく、IDを出さないのもここではあなたに付き合いませんよという意思表示です
Name_Not_Found [] 2019/11/25(月) 00:04:23.81:bIDwJQMf

なんでかたくなにさげでくるの?
どうでもいいがメールアドレスおしえてよ
IDもさらさない自分で場ももうけない
なにがやりたいのかさっぱり
つかアンカぐらいつけようね?
なんでそれすらできないの?
それが場をよごしてんだよ…

ここは技術について語る場であってその点なんももんだいないとおもうjがねぇ
なんでここじゃだめなの?
つか冷蔵庫ってなにってのには絶高い答え内の?
Name_Not_Found [] 2019/11/25(月) 00:06:11.42:bIDwJQMf
とりあえずあげでいいよあげで
IDでるでしょ?
あげなさい
自分の発言に責任持つのはここからだね
Name_Not_Found [] 2019/11/25(月) 00:09:56.48:bIDwJQMf
なぜここでだめなのかわからんけど

えすえいちあいえぬだぶりゅおーあーるけいあっとわいえいえいちおーおーどっとしーおーえむ
メールよろ
Name_Not_Found [sage] 2019/11/25(月) 00:54:40.96ID:???

仕様としてIEEE754準拠してるだけだ。
js固有と言うわけでもない↓
ttp://http://0.30000000000000004.com/
Name_Not_Found [sage] 2019/11/25(月) 00:56:01.64ID:???
悟りマウントオジさんが攻められてるってことでいいの?
悟オジと思しき人のアドバイスって、解決の糸口を与えつつ
でも、その方法はよくないで、みたいなジェントルな指摘じゃなくて
悟りの境地から嫌味言うだけで役に立たないのよね。
何でこのスレ居るんだろ?
Name_Not_Found [sage] 2019/11/25(月) 06:34:20.61ID:???
質問者は幅広い意見を聞いて参考にして自ら解決すればいいのであって、
別に誰か一人が正解を用意する必要はないんじゃないか
Name_Not_Found [sage] 2019/11/25(月) 07:37:52.93ID:???
そうそう。だから俺は俺の回答をする。
だがなぜか、俺の回答を批判するだけで
自分は何も言わないやつがいる。
Name_Not_Found [sage] 2019/11/25(月) 20:32:43.68ID:???
サトオジの朝は早いのなw
Name_Not_Found [sage] 2019/11/25(月) 21:55:14.57ID:???
お前のことを知ってるぞという
相手を気持ち悪がらせて楽しむストーカー男
Name_Not_Found [] 2019/11/26(火) 08:17:35.02:asmIKrCA
js出来ないけどvueやっていい?
Name_Not_Found [sage] 2019/11/26(火) 09:37:35.29ID:???
まったくできないレベル?
Name_Not_Found [] 2019/11/26(火) 10:11:07.70:vgbZGawX
全く出来ないに等しいです

htmlcss一通りできるようになったからjsかjqueryやろうかと思ったら今はvueかreactって勧められたからvueやろうかと

少しjs齧ってからやったほうがいいかな
Name_Not_Found [] 2019/11/26(火) 10:11:41.09:vgbZGawX
IDID変わってたけど628です
Name_Not_Found [sage] 2019/11/26(火) 11:53:56.20ID:???
jQueryでいいよ。HTML/CSSと親和性が高いのはjQuery
HTML/CSSメインであればjQueryが一番

vueやreactはJavaScriptを使ってHTML/CSSを
生成するようなものだから作り方が全く違う。
ゲームとかアプリに近いものを作るためのもの。
Name_Not_Found [sage] 2019/11/26(火) 12:31:29.14ID:???

DOMの基本までは齧った方が良いよ
vueが何やってるか分からんくなる
Name_Not_Found [sage] 2019/11/26(火) 12:42:58.69ID:???
違うでしょ
jQueryはDOM操作を要領よくザックバランにする場合に向いているのであって、使うにはあらゆる知識が少しずつ必要。
一方フレームワークはそれらを覆い隠してくれて、Webの知識に乏しくてもコンポーネントを組み合わせてつくりたいものが作れる。
jQueryはあくまで何かを作ってくれるものではなくて、作りたいものを作る方法がわかっている人が有効に使えるライブラリだから知識が欠けてる人に勧めるようなものではない。
Name_Not_Found [sage] 2019/11/26(火) 12:52:15.96ID:???


の↓これに注目
> Webの知識に乏しくてもコンポーネントを組み合わせてつくりたいものが作れる。

Webの知識に乏しくてもって書いてあるでしょ?
これ「(他の言語でプログラミング経験があれば)Webの知識に乏しくても」という意味なんだよ

つまりね、フレームワークだと、HTML/CSSといったWebの知識は使わない。
デスクトップアプリ開発の知識が必要ということなんだよ
Name_Not_Found [sage] 2019/11/26(火) 12:59:08.41ID:???
jQueryとHTML/CSSの親和性の高さは、jQueryを使った記述が
CSSと違いことからもよく分かると思うよ。

例えば、CSSで全てのリンクを赤くする場合、

a { color: red } と書く

これがjQueryだと

$("a").css({color: 'red'}) となる
Name_Not_Found [sage] 2019/11/26(火) 13:19:01.24ID:???

> ゲームとか

はい嘘つき乙w
Name_Not_Found [sage] 2019/11/26(火) 13:20:34.36ID:???
> ゲームとかアプリに近いものを
って書いてるのを、ゲームだけ切り取るようなやつやで?
信用できるかな?
Name_Not_Found [sage] 2019/11/26(火) 16:15:15.56ID:???
vueでカルーセルを使ってみたいんですが、
これをどうやってvueに組み込めばいいんでしょうか?
jQueryならサンプルがあったのですが・・・
ttp://https://creive.me/archives/10461/
Name_Not_Found [sage] 2019/11/26(火) 18:59:41.86ID:???

そうだよなwお前いつもウンコとかカレー食べてるもんなwww
Name_Not_Found [sage] 2019/11/26(火) 21:04:02.23ID:???
ライブラリとフレームワークを同列で評価するのはおかしいと思う

あとjqueryにしてもvueにしても、まずはプログラミングの基本文法と制御構造や簡単なアルゴリズムくらいは理解していたほうが良いし、それを生のjsで学んでから始めたほうがいいと思う。
Name_Not_Found [sage] 2019/11/26(火) 22:54:15.29ID:???
jQuery, Bootstrap のどちらかを先に学ぶ。
Bootstrapは、jQuery を使っているし

Vue.js, React などは、仮想DOM とか、そのライフサイクル、
どこの時点で、状態が更新されるかなど、内容が難しい

仮想DOM上で状態を更新しても、実際のDOMは、まだ更新されていない。
そのタイミングのズレが、素人には解決できないバグとなる

jQueryなら、コードが実行された時に、実際のDOMが更新されるだけ。
普通のDOMアクセス


Bootstrap に、カルーセルは無いの?
Name_Not_Found [] 2019/11/26(火) 23:02:26.05:Omnvbm9U

メールはよおくれ
にげてんじゃねぇぞ
Name_Not_Found [] 2019/11/26(火) 23:09:20.81:Omnvbm9U

逃げてるだけっすか
おもしろい
Name_Not_Found [sage] 2019/11/26(火) 23:10:53.44ID:???
Bootstrapは内部でjQuery使ってるってだけで、Bootstrap学ぶ分にはjQuery関係ないよね。
Name_Not_Found [] 2019/11/26(火) 23:16:13.91:Omnvbm9U

屁理屈こねて逃げるあほ
メール待ってますよw
当然メールは全部晒すけど
約束守ろうねぇw
Name_Not_Found [] 2019/11/26(火) 23:22:23.24:Omnvbm9U

IDすら晒せないやつに発言けないよ
メールはよおくりなさい
お前が望んだ連絡法だろw
Name_Not_Found [sage] 2019/11/27(水) 02:33:17.64ID:???
とりあえずを十回読んだら?
Name_Not_Found [sage] 2019/11/27(水) 03:28:09.72ID:???
まあbootstrapもバージョン5からjQuery外すんだけどねw
ttp://https://github.com/twbs/bootstrap/pull/23586
Name_Not_Found [sage] 2019/11/27(水) 08:42:29.91ID:???
ttp://https://youtu.be/xsCHyCbQH7Q
Name_Not_Found [sage] 2019/11/27(水) 17:26:01.69ID:???
バックエンドのJavaScriptも勉強方法としては同じですか?
言語仕様は同じでライブラリーだけ違うみたいな感じと思っていて合ってますか?
Name_Not_Found [] 2019/11/27(水) 19:19:25.41:oZ1HMqv6
JavaScript出来ます!って言っていいのってどのレベル?
Name_Not_Found [sage] 2019/11/27(水) 19:56:58.67ID:???
初心者向けの入門書読んだぐらいじゃね?

プロは「プログラミングができる」の大枠の中の
一つとして、JavaScriptや特定の言語を使ったことが
あるかないかでし考えてないので
特定の言語が使えると言う人=初心者だからね
Name_Not_Found [sage] 2019/11/27(水) 20:27:03.42ID:???
フォームに直接記述してポストすると文字化けしないけど
ajaxで送信すると日本語が文字化けします
encodeURIやってもencodeURIの文字列そのまま反映されてしまう
どうしたらいいですか
Name_Not_Found [sage] 2019/11/27(水) 20:36:13.81ID:???
勉強する
Name_Not_Found [sage] 2019/11/27(水) 20:37:10.33ID:???
勉強できる人から聞いた方が早いと思います
Name_Not_Found [sage] 2019/11/27(水) 20:42:48.31ID:???
ちなみにサイト側(html側)はmetaタグでShift_JISが設定されてました
Name_Not_Found [sage] 2019/11/27(水) 20:46:12.96ID:???
一昔前からエンコードはUTF8限定、metaタグに指定できるのもUTF8だけ
HTMLの仕様を破ってるオレオレサイトで問題が起こるのは仕方が無い
Name_Not_Found [sage] 2019/11/27(水) 20:50:08.67ID:???
・サーバー側は触れない
・送信フォームはshift_JIS
・ajaxで日本語をpostすると文字化けする
・ajaxで日本語をencodeURIで変換してからpostするとそのままの文字列


>一昔前からエンコードはUTF8
ほぅ・・そうなんですか

フォームから直接投稿すると問題なくイケるってことは
ajaxでやっても何かしら設定すればイケると安易に考えていたのですが
調べてみると「サーバー側の設定を云々」がいっぱい出てきてお手上げ状態です
Name_Not_Found [sage] 2019/11/27(水) 20:53:25.83ID:???

Node.js は、Ruby のコピーだから、
先に、Ruby on Rails で、テスト/開発/デプロイの全工程を学んだ方が速い

まあ、どの言語でも、Railsが基本と思ってよい

サーバー構築運用が嫌なら、今時は、サーバーレスのAWS Lambda で、Ruby もある。
Software Design 12月号が、AWS Lambda の特集
Name_Not_Found [sage] 2019/11/27(水) 21:03:47.38ID:???

Ruby なら、sjis/utf8 変換できる。
NKF モジュールも使える

JavaScript で、sjis/utf8 変換できないの?

漏れは、Web 系なら、Windows でも、utf8しか使わないけど
Name_Not_Found [sage] 2019/11/27(水) 21:17:43.78ID:???
どいつもこいつもどこから突っ込んでいいのやらw
Name_Not_Found [sage] 2019/11/27(水) 21:33:23.86ID:???
サーバー側の問題
AjaxはUTF8で行われるのにサーバーでSJISでデコードしようとしてるんでしょ
Name_Not_Found [sage] 2019/11/27(水) 21:43:48.46ID:???
htmlではSJIS指定になっていてhtml側からの投稿が成功するってことは
ajax側でSJIS変換か何かすれば同じように成功する道理なのでは
Name_Not_Found [] 2019/11/27(水) 21:51:59.37:9Jm9WI0x
[1:"あああ", 3: "いいい", 8:"ううう"]
のような連想配列があるとして、

[8:"ううう", 3: "いいい",1:"あああ"]
のように降順で並べ替えたいと思います。

sort()やreserve()だと思ったとおりにならないのですが、
どうすればいいのでしょうか?
Name_Not_Found [sage] 2019/11/27(水) 22:04:59.37ID:???
プロパティの列挙はまず配列の添字に有効な範囲の数値の数字キーを持つものが
0から順に列挙され、その後にプロパティが作られた順に列挙される
だからその例のプロパティを並び替えることはできない
どうしてもということであればMapを使って
new Map(Object.entries(x).reverse())と書ける
数字キー出ない場合でMapを使わない書き方は
Object.fromEntries(Object.entries(x).reverse())
Name_Not_Found [sage] 2019/11/27(水) 23:50:13.48ID:???

XHRやfetchで文字列を渡した時にページの文字コードと関係なくUTF-8で送信するのは仕様
どうしてもクライアント側でやらないとだめならなんらかの文字コード変換ライブラリを使って変換するしかないかな
Name_Not_Found [sage] 2019/11/28(木) 00:25:26.55ID:???
文字コード変換ライブラリ(笑)

だから勉強しろ
Name_Not_Found [sage] 2019/11/28(木) 01:16:35.73ID:???

[ { num: 1, str: "a" },
{ num: 5, str: "b" },
{ num: 10, str: "c" } ]

こういうように、property 名が決まっている形なら、
「jquery sort object array by property」で検索できるけど、

その例では、property名が一々、変わる訳でしょ?
設計がおかしい
651 [sage] 2019/11/28(木) 06:40:22.11ID:???

詳しくありがとうございます
Name_Not_Found [sage] 2019/11/28(木) 06:50:28.52ID:???
今はサーバレスの時代でRoRとNodeで最低限のAPIサーバーを建てるやり方は違う
それこそライブラリーだけ違うみたいな感じと思っていて問題ない
Name_Not_Found [sage] 2019/11/28(木) 07:24:21.33ID:???
githubのhtt○○.jsを直接jQuery.getScriptしたら
MIME type (“text/html”) mismatchでCross-Originのエラーがでたのですが解決方法をおしえてください
(直接スクリプト全文コピペは重いので諦めました)
Name_Not_Found [sage] 2019/11/28(木) 07:31:37.28ID:???
githubのhtt○○.jsを直接使用してはいけません。
そういう使い方をして欲しくないからgithubは対応していません。
672 [sage] 2019/11/28(木) 07:31:46.08ID:???
自己解決
raw.githubusercontent.comを
rawgithubusercontent.comにしたらできた
Name_Not_Found [sage] 2019/11/28(木) 07:32:17.94ID:???

いえ、githubが公式回答してました
Name_Not_Found [sage] 2019/11/28(木) 08:32:26.25ID:???
自作jsが長くなってきたのでもういっそのこと外部サイトで管理しようと思うのですが
どこかおすすめのとこないでしょうか
httpだとブラウザ許可するのも面倒なのでhttpsで
かつ直接読み込みOKなホスティングサイトってないのでしょうか
有料でもしょうがないかなと思ってます
Name_Not_Found [sage] 2019/11/28(木) 08:48:47.06ID:???
netlfyでええやろ。ドラッグ&ドロップするだけやで。git管理もできるけど。
Name_Not_Found [sage] 2019/11/28(木) 09:15:55.36ID:???

ありがとうございます さっそくやってみます
Name_Not_Found [sage] 2019/11/28(木) 09:19:22.12ID:???

よくそんな中国人所有の怪しいドメインなんか使う気になれるな
Name_Not_Found [sage] 2019/11/28(木) 09:23:06.79ID:???

> いえ、githubが公式回答してました
嘘つくな。githubは公式にそれを禁止したと書いてる
ttp://https://github.blog/2013-04-24-heads-up-nosniff-header-support-coming-to-chrome-and-firefox/
Name_Not_Found [sage] 2019/11/28(木) 09:24:37.90ID:???

github使えよ
Name_Not_Found [sage] 2019/11/28(木) 09:26:51.19ID:???
jsの配布と管理は別で分けろ
Name_Not_Found [sage] 2019/11/28(木) 10:24:55.88ID:???
API使えばGitHubで配布しても大丈夫でしょ
IP毎に回数制限があるから、乱用はできないし、皆が使いだしたら不味いけど
もしくはリソース配布pagesを作って隠しiframeでやり取りするか
Name_Not_Found [] 2019/11/30(土) 01:38:32.33:hNOMfDBS

ウェブアプリ1つつくって公開したレベル
さわっただけでJSできますとかさぎだから
こういうやつ
Name_Not_Found [sage] 2019/11/30(土) 07:13:07.63ID:???
それはJSじゃなくてWebアプリできますでしょ
JSできると言うときは、スコープチェーンやプロトタイプチェーンを理解してるくらいでしょ
Name_Not_Found [sage] 2019/11/30(土) 07:36:02.22ID:???
フロントエンドもnodeも触らず
ひたすら仕様を勉強しました的な意味になるのかな
Name_Not_Found [] 2019/11/30(土) 18:46:51.23:hNOMfDBS

ばかかw
Name_Not_Found [sage] 2019/11/30(土) 20:04:08.96ID:???

具体的にやってきたことを色々話せるのならそれに越したことはないけど
もし面接で私は〇〇のフレームワークを使った経験がありますだとか、
〇〇を作ってきましたではなく、ただ「JSできます!」ってアピールしてくる人が来たら
俺はまず仕様をある程度理解してるかどうかを聞くよ

それでプロトタイプチェーンやスコープチェーンを図に書いて説明できるくらいであれば
確かにただ「JSできます」と言えるだけの能力あるね。基礎能力に期待できるねってことになるけど
そうでなけでば、本当にJSとはどういうものか分かってますか?と聞かないといけなくなるね
Name_Not_Found [sage] 2019/11/30(土) 20:34:21.77ID:???
うん、だから言ったろ?
JavaScript使えます!ってアピールする人は初心者なんだから
初心者は初心者らしく入門書読んだ程度で
JavaScript使えます!ってアピールしろって。
Name_Not_Found [sage] 2019/11/30(土) 20:49:00.70ID:???

お前はウェブアセンブリとか分かるのか?上から目線はオワコンやで
Name_Not_Found [sage] 2019/11/30(土) 21:07:23.95ID:???

君の気持ちは分かるし、一般的にはそういう理屈は分かるけれど、
俺にそういう質問は投げないでくれ
wasmはたまたま分かってしまっているから
asm.jsやNCが流行ってた頃からその系統は追っかけてて
分かってしまうどころかwatも趣味がてら直接書いてるから
watが書けても価値はほぼないが日本でwasmを分かってる上位100人には入ると思うよ

ちなみに上から目線云々に関しては分からないね
どのレベルなら言っていいか決めてくれと言われてるのだから、
上から目線気味の評価基準を語るのは仕方なくはないか?
ただ悪意は無い
Name_Not_Found [sage] 2019/11/30(土) 21:26:08.63ID:???
wasmについて知ってる!
でも何も作れない!

こういうやつ多すぎ
Name_Not_Found [sage] 2019/11/30(土) 21:32:37.40ID:???
何かの技術を知ってると言えるまで興味と持続力を持って取り組めたのなら
それを使って何かを作ることもまた可能だろう
知らずに作ることは出来ないのだから
知っているが活用しない人、知っているがまだ活用できない人を
批難するのはおかしいと思うけどな
Name_Not_Found [] 2019/11/30(土) 23:08:22.55:hNOMfDBS
ビジネスで必要なのは何を知ってるかより
何を作ったことがあるかだよw
作ったもの見れば何ができるかわかるし
Name_Not_Found [] 2019/12/01(日) 00:26:05.98:gBuzwfRc
結局のところ実際見てみないとってところに落ち着くw
とりあえず動くものを作るだけってのはそこまで難しい作業じゃないからな
Name_Not_Found [sage] 2019/12/01(日) 03:02:04.85ID:???
漏れなら、Ruby on Rails をやった事があるかどうか聞く

Railsが、すべてのフレームワークの基礎だから。
CakePHP, Spring Boot も、Railsのコピーだろ

Rubyが出来れば、Node.js も出来る。
Node.jsは、Rubyのコピーだから

それと、サーバーレスのAWS Lambda で、Rubyでプログラミングできるかどうか聞く。
Rubyで出来れば、Node.jsでも出来る
Name_Not_Found [sage] 2019/12/01(日) 04:25:53.04ID:???
CakePHP, Spring Boot も、Railsのコピーなので
どれかやっていればいい
Name_Not_Found [sage] 2019/12/01(日) 06:12:16.00ID:???

ビジネスで大事なのは何を知っているかでもなく
何を作ったことがあるかでもなく
・こちらの意図を汲み取れる能力があるか
・嘘を付かず誠意があるか
が必要
こちらの指示だったり、依頼だったりを正しく汲み取って
出来ないことは正直に出来ないと言える人なら無能でも問題ない
Name_Not_Found [sage] 2019/12/01(日) 15:02:33.75ID:???
rubyrubyうるさいやつが来たら叩き出すことにしよう
Name_Not_Found [sage] 2019/12/01(日) 18:19:29.12ID:???
type=fileに複数ファイル追加したあと、一部取り除きたいのですがどうやればいいでしょうか

今は、input.filesを回して、必要なやつだけをメモしておいて
var fd=new FormData('ダミーの<form>')に
fd.append('file',file) ←いるやつだけ追加
fdをajaxでPOST
みたいにしてます
これで「複数ファイルを追加したあと、一部のファイルだけキャンセルしてアップロード」
はできたのですが、なぜか同じファイルを2つずつ投稿してしまうのです・・
700 [sage] 2019/12/01(日) 19:13:40.80ID:???
半分、自己解決しました
2重投稿については、自分のミスでした
単純に投稿しないようなロジックをスルーしていただけでした。

あとは、ダミーformを作って必要なfileデータをappendしてPOSTするしかないのか?
という部分です
思いつきでやっただけなので、普通に一部クリアできるならそっちのがいいかなと
Name_Not_Found [sage] 2019/12/01(日) 20:09:47.94ID:???

1つのinputあたり1ファイルならvalue=""で消せる
multipleなやつをフィルタするなら新たなFormDataにappendしないとだめかな
ダミーのフォームに他に何もinputが無いならnew FormData()にフォームを渡す必要はないですよ
700 [sage] 2019/12/01(日) 20:35:31.45ID:???

multipleなやつですね

>new FormData()にフォームを渡す必要はないですよ

さっそくやってみたらできました
わざわざダミーのform作ってdocumentに追加して云々の工程がなくなってスッキリりました
ありがとうございます!
Name_Not_Found [sage] 2019/12/02(月) 11:12:42.59ID:???
ttp://https://youtu.be/i8IVK80kQAY
Name_Not_Found [sage] 2019/12/02(月) 20:41:50.28ID:???
このクリスマスにSpheroを子供たちに買い与えようと思っています
JavaScriptでもプログラミングできるそうなのですが
10年前にちょっと触っただけで最近のasync?とか良く分からないので
どなたか私も含めたコーチになっていただけませんでしょうか?
Name_Not_Found [sage] 2019/12/02(月) 22:02:42.67ID:???
スクロールの有効無効を切り替える関数を下記@のように記述し、
呼び出すときの引数で、受け取る関数を選別していたのですが、
上手く停止できませんでした。
そこで、Aのようにオブジェクトごと受け取り、それぞれを呼び出したところ
上手くいきました。
setTimeout・clearTimeoutでも似たようなことがあり、その際は
タイマー用のIDをループの親において、IDが初期化されないようにすることで
解決できました。

@のときは何が原因で上手くいかなかったのでしょうか?

@
var scrollEventToggle = function(boolean) {
 var funcObj = {
  // スクロールイベント停止のまとめ
  disableScroll: function() {
   // 無効の記述
  },
  // スクロールイベントの停止を無効のまとめ
  enableScroll: function() {
   // 有効の記述
  },
 };
 if (boolean) {
  return funcObj.enableScroll;
 }
 return funcObj.disableScroll;
}
;
var hoge = scrollEventToggle(false);

続きます。
Name_Not_Found [sage] 2019/12/02(月) 22:03:10.19ID:???
A
var scrollEventToggle = function(boolean) {
 ...
 return funcObj;
};
var obj = scrollEventToggle();
Name_Not_Found [sage] 2019/12/03(火) 08:46:45.91ID:???

ttp://https://www.internetacademy.jp/
Name_Not_Found [sage] 2019/12/03(火) 20:23:14.76ID:???

var hoge = scrollEventToggle(false)();
Name_Not_Found [] 2019/12/04(水) 03:06:26.17:pwvm1XzD
クロムでTamperMonkeyてユーザスクリプト仕えるようにする拡張使ってんだけど
これでlocalStorageに保存したデータを
サイトの運営者は取得してサーバに送信とか技術的にできるの?

例えば5chサイトでうごくスクリプトでlocalStorageに入れたデータろ5ch運営者が取得することは可能なの?
Name_Not_Found [sage] 2019/12/04(水) 03:36:59.23ID:???
ユーザースクリプトが動くオリジンのlocalStorageに保存されるのだから当然サイト側のスクリプトからも読み書きしようと思えばできる
いじられたくないデータはGM_getValue/GM_setValue(Greasemonkey4互換の場合はGM.getValue/GM.setValue)を使いましょう
Name_Not_Found [sage] 2019/12/04(水) 05:13:37.57ID:???
暗号化すればいい
Name_Not_Found [sage] 2019/12/04(水) 07:45:52.70ID:???
localStorage.setItem("キー", "値");
localStorage.getItem("キー");

localStorage.removeItem("キー");
localStorage.clear();

たぶん、サイト側はサイト側が保存した、キーしか見ないだろ。
全部のデータなんて、取得しないだろ

5ch のコード内を「localStorage」で検索してみれば?
713 [sage] 2019/12/04(水) 07:50:13.75ID:???

自己レス

>たぶん、サイト側はサイト側が保存した、キーしか見ないだろ。
>全部のデータなんて、取得しないだろ

仮にサイト側で、全部のデータを取得したとしても、
サイト側で処理するのは、サイト側が使ったキーだけだろ

それ以外のデータは、無視されるだけだろう
Name_Not_Found [sage] 2019/12/04(水) 09:17:04.73ID:???
rubyキチガイも無視されています
Name_Not_Found [sage] 2019/12/04(水) 14:16:28.83ID:???
firefoxでブラウザに表示されている画像ファイルをzipファイルに保存するアドインを作成したいです。
javascript で、自身が組み込まれているhtmlを文字列として取り込むことはできますか?
Name_Not_Found [] 2019/12/04(水) 18:29:30.65:6dpSr+et

はい
要素にアクセスして
innerHTMLやouterHTMLで取得してください
Name_Not_Found [sage] 2019/12/04(水) 23:51:41.08ID:???
curl, wget, Ruby のNokogiri などで、
CSS Selector/XPath で、a 要素内の画像のURL を取得する

(ただし、Ajax で非同期に、内容を作っているようなページでは、
Ruby, Selenium WebDriver で、ブラウザを操作しないといけないかも)

画像のURLから、curl, wget, Rubyなどで、ダウンロードする。
そして、そのまま保存する

画像は既に圧縮されているので、zip にしない。
2重に圧縮しないこと!

JavaScript なら、Node.js(サーバー)を含んだ、
Electron みたいなアプリでないと、ローカルPC にアクセスできない
Name_Not_Found [sage] 2019/12/05(木) 00:22:11.76ID:???
隔離病棟に帰れ
Name_Not_Found [sage] 2019/12/05(木) 07:27:39.33ID:???

おじいちゃん、病室抜け出しちゃダメでしょ
Name_Not_Found [sage] 2019/12/05(木) 08:42:51.55ID:???
zipが非可逆圧縮だとでも思ってるのかな?ww
Name_Not_Found [sage] 2019/12/05(木) 10:38:58.11ID:???
多数の画像を無圧縮zipでまとめるだけというのはよくあるでしょ
Name_Not_Found [sage] 2019/12/05(木) 11:47:49.09ID:???
netlifyでドラッグ&ドロップでサイト上げる時も画像もまとめてzipに入ってるよ。
rubyキチガイは太古からあるアーカイブという概念を知らないのだろう。
Name_Not_Found [sage] 2019/12/05(木) 16:17:21.84ID:???
zlibをjsで書いてくれた人がいるよ
ttp://https://github.com/imaya/zlib.js/
Name_Not_Found [sage] 2019/12/05(木) 21:48:02.61ID:???
ZIP化なんて簡単だから書いてみたら良いのに
CRC32の計算式まで理解しろとは言わないからそこはコピペでいいとして、
あとは単純にバイトを並べるだけだから
Name_Not_Found [sage] 2019/12/06(金) 15:19:35.34ID:???
じゃあzipの暗号化に対応させてくれ
これができるとどうしてもHTTPSが使えないときに
それなりに安全に情報の受け渡しができる。

ファイルダウンロードだけならjsから対応する必要がないけど
画面に情報を表示できる。
Name_Not_Found [sage] 2019/12/06(金) 15:48:59.60ID:???
総当たり出来るパスワードなんて
Name_Not_Found [sage] 2019/12/06(金) 20:14:05.22ID:???
暗号化もCryptoAPIを通せば良いだけだから、暗号化がないとこまで作れたのなら簡単に作れる
それよりも解凍の方が何倍も難しい
Name_Not_Found [sage] 2019/12/08(日) 03:20:30.51ID:???
abc.com/def/ghi.html
こういうURLがあった場合

abc→123、def→456、ghi→789
にそれぞれ置換したい時どうやんの?

これだと一箇所しか変更出来ないし
javascript:location.href=document.URL.replace('abc','123');
Name_Not_Found [sage] 2019/12/08(日) 06:16:34.08ID:???
ab abc abcd がある時はどうしたいのかとか、もっともっと条件を絞らないと答えようがない
Name_Not_Found [sage] 2019/12/08(日) 13:03:13.66ID:???

ttp://https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/replace
関数を指定しろ
Name_Not_Found [sage] 2019/12/08(日) 13:43:00.95ID:???

>ab abc abcd がある時
自分で言ってるけど答えようあるじゃん
さらに言えば単にアルファベット順に対応した数値に置換したいわけではなく
汎用的に複数置換したい意味か?とも考えられるし
いくらでも答えようあるというかそれなりに頭回る人ならわかるでしょ
で、把握が間違っていたとしても何か問題なの?
Name_Not_Found [sage] 2019/12/08(日) 14:00:31.57ID:???
頭回る人が答えてあげればいいじゃん
回答は義務じゃない
Name_Not_Found [] 2019/12/08(日) 15:07:04.32:x/tnCdKb
回答する側がエスパーして、そうじゃなくてーと言われたらそのやり取りが無駄だから最初に全部提示しろって話でしょ
Name_Not_Found [sage] 2019/12/08(日) 18:04:06.34ID:???
だがブックマークレット実行したら
URLのabc、def、ghiを同時に指定した文字に置換するのがやりたいのよ
Name_Not_Found [sage] 2019/12/08(日) 19:13:46.18ID:???

置換したい個数分だけ反復するのが一番手っ取り早い
Name_Not_Found [sage] 2019/12/08(日) 19:54:52.90ID:???

が書いてるけど「同時」ってのはあり得ないんだってば
単純にサンプルの結果が得たいだけなら工夫も何も要らないが
document.URL.replace('abc','123').replace('def','456').replace('ghi','789');
Name_Not_Found [sage] 2019/12/08(日) 23:51:15.44ID:???

に書いてある

replace には、関数も指定できる!
「javascript replace 関数」で検索!
Name_Not_Found [sage] 2019/12/09(月) 02:19:04.34ID:???
正規表現を使わずに、変換した!

function my_replacer( src_str, dest_word ) {
var pos = src_str.indexOf( '.' ); // 位置
return dest_word + src_str.slice( pos ); // 連結
};

var src_str = 'abc.com/def/ghi.html';
var src_words = src_str.split( '/' ); // 分割
console.log( src_words );
//=> [ 'abc.com', 'def', 'ghi.html' ]

var dest_words = [ ]; // 配列に追加していく
dest_words.push( my_replacer( src_words[ 0 ], '123' ) );
dest_words.push( '456' );
dest_words.push( my_replacer( src_words[ 2 ], '789' ) );
console.log( dest_words );
//=> [ '123.com', '456', '789.html' ]

var result = dest_words.join( '/' ); // 結合
console.log( result );
//=> 123.com/456/789.html
Name_Not_Found [sage] 2019/12/09(月) 05:56:35.14ID:???
var rep = {abc:123, def:456, ghi:789};
var rstr = new RegExp(Object.keys(rep).join('|'), 'g');
"abc.com/def/ghi.html".replace(rstr , key =>rep[key]);

正規表現使えばいいじゃん
Name_Not_Found [sage] 2019/12/09(月) 08:53:01.29ID:???

なんで、この口の悪い質問者は、無反応を貫いてんの?
Name_Not_Found [sage] 2019/12/09(月) 09:31:46.08ID:???

>無駄だから
否定されたと感じるか、それを恥ととるかどうかだけで
知的活動としては無駄ではないよね
全部掲示するなとは言わないし、質問内容にもよるが
質問しにくるレベルの質問者に、全部掲示するorできる能力があると思っている認識がおかしい
Name_Not_Found [sage] 2019/12/09(月) 12:40:12.22ID:???
質問者の分かる範囲で全部出してくれれば良い
伝えようって気があるかないかの話

雑な質問には雑に対応するだけ
Name_Not_Found [sage] 2019/12/09(月) 13:37:15.72ID:???

全部出したのか雑なのか
その線引きなんてだれにも判断できないだろ
現に729の本題は>同時に
だったわけで、あとからわかったことだし
逆に最初からその本質を質問できることは、自己解決との撞着じゃないか
それを、ターンが無駄だから最初からやれってやはりおかしい

「おれが答えられるレベルの、きちんと正解が出せる、後出しでおれが恥をかかないよう、丁寧な質問を心がけろ」
と言っているようにしか思えない
Name_Not_Found [sage] 2019/12/09(月) 14:50:46.05ID:???
抽象的な質問をされると困る謎の勢力、俗に言うアスペ回答者がいるんだろう
Name_Not_Found [sage] 2019/12/09(月) 16:54:32.27ID:???
自演乙。
Name_Not_Found [sage] 2019/12/09(月) 18:25:43.20ID:???
質問の具体化を求められると困る勢力、俗に言うアスペ質問者がいるだろう
Name_Not_Found [] 2019/12/09(月) 19:22:16.72:xtepp7er
コールバック関数の中にあるthisっていうのはどのオブジェクトを指しているんでしょうか?
関数自体を定義しているオブジェクトではないようなのですが…
Name_Not_Found [sage] 2019/12/09(月) 19:35:02.33ID:???
ふつうの関数かアロー関数かによっても違うからなんとも
Name_Not_Found [sage] 2019/12/09(月) 20:01:34.02ID:???

呼び出し元依存
Name_Not_Found [sage] 2019/12/09(月) 20:19:16.06ID:???
Object.entries( { abc:123, def:456, ghi:789 } ).reduce( Function.apply.bind( ''.replaceAll ), 'abc.com/def/ghi.html' )
Name_Not_Found [sage] 2019/12/09(月) 20:23:47.76ID:???

thisは0番目の引数だから何であるべきと決まっているわけではないが、
一般的にレシーバーであることが多くコールバック関数にも提起元関数コンテキストのレシーバーを受け継がせるのが一般的
Name_Not_Found [sage] 2019/12/09(月) 20:42:01.19ID:???
いろいろ試してみるとおもしろいよ
class Hoge{
constructor(x,y){
this.x=x;
this.y=y;
}
cal(callback){
return callback(this.x,this.y);
}
}
var hoge=new Hoge(2,3);
var sum=(x,y)=>x+y;
var mul=(x,y)=>x*y;
console.log( hoge.cal(sum) );
console.log( hoge.cal(mul) );
Name_Not_Found [sage] 2019/12/09(月) 21:12:39.25ID:???
ドット演算子の左辺がthisになるんでしょ?
748 [] 2019/12/09(月) 21:43:56.29:xtepp7er
皆さん有り難うございます

色々試してみましたが、どうやらライブラリのコールバック関数はグローバルから呼ばれてる事が結構ある模様でした

呼び出し元依存というのが何となく掴めた気がします
Name_Not_Found [sage] 2019/12/10(火) 00:36:35.48ID:???
質問です

ここで教わったJSがそのままではIE11では動かないので
webpack4とbabel7でごにょごにょして
なんとか動くところまではたどり着いたんですが

質問1
webpackがdevelopモードだとIEがピクリとも出来ませんが
productionモードだとmapがないのでデバッグがしんどいです
どのようにするのが正解ですか?

質問2
polyfillとプラグインのせいか、ファイルサイズが200〜300KBくらいになり
特にIEで読み込みも起動も遅いんですが、何か改善策はありますか?

polyfillはuseBuiltIn entryにして、追加でwhatwg-fetchを呼んでいます
プラグインは、jquery@3とmagnific-popupを呼んでいます

ざっくり質問で申し訳ないですが
よろしくお願いします
Name_Not_Found [sage] 2019/12/10(火) 03:22:21.24ID:???
markdown記法で書かれた文章を余計なタグを取って文字列に変換する方法はありますか?
Name_Not_Found [sage] 2019/12/10(火) 05:57:58.20ID:???

正解は同じものを提供しようと思わないこと
IEはモダンブラウザ用よりも幾らか劣る機能を提供すればいい
最悪、ChromeをDLしてねでもいい
それこそ常時TorとかJS無効にしてる人だっているということもあるし
IE中心のPCとモダンブラウザが動かしてるPCでは
期待能力値のアベレージも変わってくるから
無理くりIEに対応しようと思わないのが正解
Name_Not_Found [sage] 2019/12/10(火) 08:13:11.26ID:???

パフォーマンス優先なら、トランスコンパイラは使わない
Polyfillのみ使用
トランスコンパイル後のコードを読めば分かるが、旧来の文法に変換したコードは効率が悪すぎる
Name_Not_Found [sage] 2019/12/10(火) 08:34:16.01ID:???

ラムダ・アローなどで、this が異なるから、ややこしい。
だから、jQuery の$( this ) は、コールバックに渡ってきたインスタンスに、変更されている


漏れは、IE11 には対応しない。
Chrome, Edge のみにすれば?


Markdown のパーサーの機能を探すか、
HTML に変換して、jQuery.text( ) を使うか。
ただし、子孫要素の内容が連結されてしまうけど
Name_Not_Found [sage] 2019/12/10(火) 10:36:45.74ID:???
,759,760
ありがとう

そして残念
広告屋系だからIE拒否れないんですわ
だれかIE起動したらウィンドウズがぶっ壊れるウィルス作ればいいのに( ;∀;)
759 [sage] 2019/12/10(火) 12:22:21.11ID:???

だから、Polyfillのみ実装を提案しているのだが
パフォーマンスと開発効率はトレードオフ
IE8時代ならまだしも、IE11ならマシだと思うな
Name_Not_Found [] 2019/12/10(火) 12:32:22.13:CS+xwNFi

全然違うブラウザに同じ物を提供しようとする方が
閲覧者に取っても迷惑だと教えて上げたほうがいい

家族で海に行くからと寝たきりのお爺ちゃんも引っ張っていって泳がせるか?ってこと
かと言って海に行くのを中止すると言うのも良くない。写真を見せて上げるくらいが丁度良いんだよ
Name_Not_Found [sage] 2019/12/10(火) 12:33:38.22ID:???
usebuiltin usageはだめなの?
Name_Not_Found [sage] 2019/12/10(火) 12:40:04.44ID:???

usageだと
IEもchromeもご機嫌斜めでした
Name_Not_Found [sage] 2019/12/10(火) 12:45:54.36ID:???

そもそも、なぜ問題を切り分けしようとしないんだ?
ttp://https://teratail.com/questions/101783
Name_Not_Found [sage] 2019/12/10(火) 14:10:36.53ID:???

自己解決しました
正規表現でHTMLタグ指定して切り抜いたら求める結果になりました
Name_Not_Found [sage] 2019/12/10(火) 23:38:04.79ID:???

それはじいちゃんに聞いたのか?
じいちゃんが一緒に行きたいと言ってるのに
お前は写真で我慢しろっていうのは、お前の価値観の押しつけだろ
Name_Not_Found [sage] 2019/12/11(水) 06:48:41.63ID:???
じいちゃんがいきたいと言ったら真夏の海に連れて行って泳がすとか猟奇的な価値観だな
Name_Not_Found [sage] 2019/12/11(水) 08:29:25.36ID:???

おじいちゃんは泳ぐ方法も海水浴場へ行く方法も知りません
解決までの全ての手順を手取り足取り教えてあげなければなりません
ヒントを与えても、自分で考える力がないのです

質問者は要介護者とでも思った方が精神安定上よろしいでしょう
ここの質問者は全く考えようとしません
Name_Not_Found [sage] 2019/12/11(水) 09:03:30.29ID:???
なんでおじいちゃんの話ししてんの?
Name_Not_Found [sage] 2019/12/11(水) 19:51:13.62ID:???
劣ってる存在が1つあれば、それの対応を分けるのが自然でしょという話のたとえ話でしょ
Name_Not_Found [sage] 2019/12/11(水) 19:53:33.73ID:???
このスレって
ウェブ制作業の人多いのかと思ってたけど
意外とそうでもないんだな
Name_Not_Found [] 2019/12/11(水) 20:10:53.38:UkMt8NM1
PCサイトなんですが コンテンツをボックス型にしてその上からはてなマークを被せたいと思ってます マウスを乗せるとはてなが消えて内容が見えるようにしたいです マリオのハテナボックス(マウスを乗せると透ける)のような感じが理想です 何か方法はありますでしょうか?
Name_Not_Found [sage] 2019/12/11(水) 20:19:34.88ID:???

HTML/CSSスレの方に書いたので
それで試してから
マルチポストを詫びるために去勢してください
Name_Not_Found [] 2019/12/11(水) 21:25:26.29:UkMt8NM1
すいませんありがとうございます…
Name_Not_Found [] 2019/12/11(水) 21:40:17.29:kcZBI32q
elseを学習中だけど便利だねぇ
そしてアナ雪のエルサみたいでカッコいいし
おれelseが好きになりました!!
宜しくお願いします。
Name_Not_Found [sage] 2019/12/11(水) 22:17:42.03ID:???
よろしく
Name_Not_Found [sage] 2019/12/12(木) 06:44:08.88ID:???

15年も2chに居続けて自ら学ぶという精神を大事にしてるのだから
JS仙人を目指してるJSオタクが多いでしょ

そうなると他人からあれこれ縛られて注文されるのは嫌いで
自分のペースで好きなものを好きなように作りたいから
俺みたいに自営業で幅広くやってる内の1つとして
Web制作があるって感じの人も多いんじゃない?
Name_Not_Found [sage] 2019/12/12(木) 11:16:15.44ID:???
AからBまでの処理のタイムスタンプの差を求めることってなんていうんだっけ?
タイムトラッキング・・・ではなかったような気がする
780 [sage] 2019/12/12(木) 12:45:49.47ID:???
自己解決?した
ラップタイムだったかもしれない
そもそも単に”この区間のタイムスタンプ”って言ってたかもしれない
処理にどれだけ時間かかったか気になってconsole調べてたときどこかのサイトでみた記憶なんで曖昧
お騒がせしました
Name_Not_Found [sage] 2019/12/12(木) 12:46:55.90ID:???

時間測定
Name_Not_Found [sage] 2019/12/12(木) 18:37:58.06ID:???

スポーツ用語をプログラミングにしれっと持ち込む事に違和感を持てよ
用語の意味ぐらい調べろ
Name_Not_Found [sage] 2019/12/12(木) 19:19:58.63ID:???
時間はtime
AとBの間もtimeだし、A自体もAとOの間だから同じくtime
それを測るってことはmeasure
時間測定はtime measurement
Name_Not_Found [sage] 2019/12/12(木) 19:48:03.06ID:???

バグ
はい論破
Name_Not_Found [sage] 2019/12/12(木) 19:53:20.39ID:???
てかrunとかまさにじゃん
Name_Not_Found [sage] 2019/12/12(木) 20:04:03.91ID:???
ブートストラップも
Name_Not_Found [sage] 2019/12/12(木) 21:39:06.62ID:???
durationなりtime lengthなり好きなの使えばいいよ
Name_Not_Found [sage] 2019/12/12(木) 22:00:20.73ID:???
他にもtime periodとかtime spanとか
Name_Not_Found [sage] 2019/12/13(金) 03:56:19.11ID:???
elapseとか
Name_Not_Found [sage] 2019/12/13(金) 06:30:56.38ID:???

runはもうプログラミング用語でしょ?
起源の話ではなくて新しく持ち込むことについて彼は言っているのだと思うが
Name_Not_Found [sage] 2019/12/13(金) 08:00:15.38ID:???

大昔に彼のように「持ち込むんじゃねー」とか言ってたやつがいたかもしれないだけの話じゃん
Name_Not_Found [sage] 2019/12/13(金) 08:14:14.38ID:???

お前の頭がバグってるのか
Name_Not_Found [sage] 2019/12/13(金) 09:30:05.23ID:???
説教したいだけの逆張りガイジ
Name_Not_Found [sage] 2019/12/13(金) 09:33:33.53ID:???
そもそもscriptが台本って意味
Name_Not_Found [sage] 2019/12/13(金) 12:58:57.62ID:???
vueとreact、とりあえず手っ取り早くモノを完成させたいならvueの方がお手軽なのかな?

ただvuetは大型アップデートが控えてるみたいだし学習コストを割いてもよいのか不安なのだが大丈夫かな?
Name_Not_Found [sage] 2019/12/13(金) 13:05:49.15ID:???

vueとreact以外には何ができる状態なん?
Name_Not_Found [sage] 2019/12/13(金) 13:14:33.11ID:???

htmlとcssは初歩程度
プログラム経験はCとかC#をそこそこ
ざっくりさわった感じだと素のJSは凡ミスの多い自分には危うく感じたのでtypescriptはつかえたらよいなという印象
Name_Not_Found [sage] 2019/12/13(金) 13:18:03.32ID:???

であればコストとか気にしてる段階ではないんでね?

他言語知ってるならわかると思うけど
フレームワークはそもそも
その言語には精通している前提で作られてるわけで
Name_Not_Found [sage] 2019/12/13(金) 17:28:21.99ID:???
JS知らないでフレームワーク手出すのか…
Name_Not_Found [sage] 2019/12/13(金) 20:32:36.90ID:???
こういう質問いつも不思議でしょうがないんだけど、
手っ取り早く物を作りたいのであればオーサリングツール使えば良いだけなのでは?
オーサリングツールでも拡張や編集はできるからちょっと知識があるくらいならそれも丸々役立てられるし
なんでvueやreactに興味を持つんだ?
Name_Not_Found [sage] 2019/12/13(金) 20:43:18.27ID:???

DW「いやいやいやいや買い被り」
Name_Not_Found [sage] 2019/12/13(金) 20:45:39.34ID:???
DWとかHTML4時代の干物でしょ
Name_Not_Found [sage] 2019/12/13(金) 20:52:00.54ID:???

えっ
Name_Not_Found [sage] 2019/12/13(金) 21:02:01.78ID:???

> なんでvueやreactに興味を持つんだ?

ウェブサイトには興味ないからでしょ?
作ろうとしてるのがアプリ。デスクトップアプリやスマホアプリの
ウェブ版を作ろうとしてるならvueやreactだよ
ウェブサイトを作るならHTML+CSS+jQueryになるけどね
Name_Not_Found [sage] 2019/12/13(金) 21:13:51.25ID:???
いや、それならオーサリングツールで作るはずでしょ
Webベースであってもなくても1つ作れば全環境向けに書き出せるようなものって幾つもあるんだから
わざわざWebで別個に作る必要ないと言うか、Webで別個に作れるなら最初からPWAでやってもいいけど
vueやreactがPWA構築に最も適している部類のフレームワークかというと違うと思うよ
Name_Not_Found [sage] 2019/12/14(土) 10:47:59.45ID:???
オーサリングツールとか一般名で誤魔化してないで具体的にツール名言えや。
滅びたから言えないんだろw
Name_Not_Found [sage] 2019/12/14(土) 10:49:46.69ID:???

ウェブサイトを作れるオーサリングツールなんて知らないなぁw
Name_Not_Found [sage] 2019/12/14(土) 21:49:22.60ID:???
知らないのは恥ずかしいことじゃないよ
自分が無知であることを認めることから成長は始まる
Name_Not_Found [sage] 2019/12/14(土) 21:50:48.95ID:???
この場合の「知らない」は
そんなものないって意味だよ
実際お前も名前出せないじゃん
Name_Not_Found [sage] 2019/12/15(日) 02:26:49.12ID:???
ジジイのオナニー談話とか良いからもっと参考になる話してくれ
Name_Not_Found [sage] 2019/12/15(日) 11:43:38.81ID:???
自分で調べるのが面倒だからと回答者を煽って答えを聞き出そうとするのは感心しないね
Name_Not_Found [sage] 2019/12/16(月) 13:37:12.18ID:???
すれ違い甚だしいけど
最近Qtをいろいろいじってみてる
こういうののこと?>オーサリングツール
Name_Not_Found [sage] 2019/12/16(月) 14:46:24.96ID:???
まったく違うけど、まあしょうがないよね、もう生き残ってないから見たことも触ったこともないだろうww
Name_Not_Found [sage] 2019/12/16(月) 14:52:17.93ID:???
こういうスレで答え引っ張ると
なにか良いことあるのん?
Name_Not_Found [] 2019/12/16(月) 18:00:02.57:eV3+nObF
大きなアプリ作るんじゃなきゃ初めてjavascript使った俺でもVueってそんな難しくなかったよ
htmlもあんま詳しくないけどhtmlで外観作ってテンプレートで操作って凄い解りやすくて感動した
Name_Not_Found [sage] 2019/12/16(月) 18:26:16.06ID:???
win7終了が1/14で翌日に新Edgeリリースか
2020はIE廃棄元年になるといいなぁ
Name_Not_Found [sage] 2019/12/16(月) 19:39:26.25ID:???
ブラウザのf12を押してconsoleで以下の様になる理由を教えていただけませんか?
empty は後から定義されたのに、なぜ、第0要素に値が入っているのでしょう?
そもそも、最初の push() 命令の意味するところが分かりません。

>Array.prototype.push("lol")
1
>var empty=[];
undefined
>empty[0];
"lol"
Name_Not_Found [sage] 2019/12/16(月) 20:48:55.35ID:???
>値が入っている
console.log(empty)すれば分かるけど入ってない
入ってない以上プロトタイプチェーンに則りArray.prototype[0]を読みに行くので至極当然の挙動
Name_Not_Found [sage] 2019/12/17(火) 00:33:18.99ID:???
下記はエラーとなってしまうようなのですが、
オブジェクトのプロパティで他のプロパティ同士を演算する方法は
ありますでしょうか。

var obj = {
 a: 3,
 b: 4,
 c: a + b;
};
Name_Not_Found [sage] 2019/12/17(火) 00:56:40.72ID:???
var obj = {
a: 3,
b: 4,
};
obj['c'] = obj.a + obj.b;
Name_Not_Found [sage] 2019/12/17(火) 04:34:49.07ID:???

有難うございます。
その辺の挙動が学べる様なサイトがあればお示しいただければ幸いです。
Name_Not_Found [sage] 2019/12/17(火) 05:29:00.74ID:???
ほんでもかえ
Name_Not_Found [] 2019/12/17(火) 08:21:16.93:Nc6R5Gi6

最後んとこ
c:this.a+this.b
セミコロンは}の前は文末じゃないから付けない
これで動かない?
Name_Not_Found [sage] 2019/12/17(火) 13:38:38.79ID:???

それはそれで
aとbがundefinedなだけかと
Name_Not_Found [sage] 2019/12/17(火) 13:39:04.51ID:???

サイ本
Name_Not_Found [sage] 2019/12/17(火) 13:40:59.65ID:???
var obj = {
 a: 3,
 b: 4,
 c: this.a + this.b
};

console.log(obj);//{a: 3, b: 4, c: NaN}

var obj = {
 a: 3,
 b: 4,
 c: obj.a + obj.b
};

console.log(obj);//{a: 3, b: 4, c: 7}
Name_Not_Found [sage] 2019/12/17(火) 13:42:37.50ID:???
単に前半のobjが生きていただけで
更新したら>//{a: 3, b: 4, c: 7}
はエラーでした すみません
Name_Not_Found [sage] 2019/12/17(火) 13:45:54.98ID:???

まだその時点でobjは未定義だかんね
Name_Not_Found [sage] 2019/12/17(火) 13:58:27.76ID:???
質問の直後に答え出てるのになぜ続ける
Name_Not_Found [sage] 2019/12/17(火) 14:16:58.14ID:???
820は簡略形でじつはクラスとか必要としている可能性も微存
セミコロンの凡ミスがあるし単にabの計算結果をcに入れるテストをしたいだけの可能性大だが
Name_Not_Found [sage] 2019/12/17(火) 14:31:37.42ID:???
リテラルの問題かなあ
Name_Not_Found [] 2019/12/17(火) 16:06:10.46:Yirm1yca
var obj = {
a: 3,
b: 4,
get c() {
return this.a + this.b;
},
};
console.log(obj.c);
Name_Not_Found [sage] 2019/12/17(火) 18:05:03.75ID:???
任意のサイト限定でクロスサイトをやりたいのですが
ブラウザはcookieをどう管理してるのでしょうか
例えば、クロスサイトを許可した自分のサイトS上で、
AサイトとBサイトへajaxしようとしたとき
BサイトにAサイトのcookie情報が流れる(逆然り)みたいなことはあるのでしょうか?
Name_Not_Found [sage] 2019/12/17(火) 18:47:00.95ID:???
サッカーの話?
Name_Not_Found [sage] 2019/12/17(火) 19:06:14.25ID:???

それはクロスオリジンかcorsと呼ぼう
でcorsの細かなお作法はググった方がわかりやすいのでよしなに

Access-Control-Allow-Credentials

というヘッダがあって、これがtrueになっていて
かつ、クライアント側でmode: cors、credentials: includeになっていれば
AドメインからBドメインにリクエストを送った時
Cookieも渡すことが出来るよ
Name_Not_Found [sage] 2019/12/17(火) 19:59:43.54ID:???

なるほど
問答無用でcookie情報を送ってしまうのかと思っていました
AドメインとBドメインへ同時というか非同期でリクエストを送って
AドメインにはAドメイン用のcookieだけ(BはBだけ)、
みたいに送れるのだろうか?というのは気になりますが
cors調べてみます ありがとうございました
Name_Not_Found [sage] 2019/12/17(火) 20:13:24.48ID:???
JSが扱うのはdocument.cookieだけですし
Name_Not_Found [sage] 2019/12/18(水) 06:44:12.60ID:???
残念ながらドメインをまたいだCookieは送れない設定になってることも多いし、
今後デフォルトで送れなくなる方向です
Name_Not_Found [sage] 2019/12/18(水) 07:46:50.30ID:???
そうですか
サーバーサイドでやるしかないですかね
Name_Not_Found [sage] 2019/12/18(水) 11:55:25.71ID:???
質問です、
1から100までの値がランダムで配列される時に、[2,3,10]とあると、
1がりんご
10はメロンにしたいんですが、
indexOf("1")>=0?"りんご"にすると
10もりんごになっちゃいます。
1は1
10は10で判定する方法はありますか?
Name_Not_Found [sage] 2019/12/18(水) 12:06:45.43ID:???

,(カンマ)でsplitしてループで比較
Name_Not_Found [sage] 2019/12/18(水) 12:11:04.53ID:???

> 1から100までの値がランダムで配列される時に

日本語を頑張れ

> indexOf("1")>=0?"りんご"にすると
> 10もりんごになっちゃいます。

Array#indexOfは10にマッチしない
Name_Not_Found [sage] 2019/12/18(水) 12:21:29.03ID:???
[2,3,10] は、数値の配列でしょ?

indexOf("1")
"1" は、文字列じゃん

型が異なると、バグる
Name_Not_Found [sage] 2019/12/18(水) 14:32:50.74ID:???

まじで???

デフォで送れないのは今でもそうだけど
csedentialはどうなっちゃうの?
Name_Not_Found [sage] 2019/12/18(水) 15:00:48.35ID:???

corsでcookieが扱えなくなるのは俺も知らんけど
Ajaxするときのcredentialがなくなることはなかろう
Name_Not_Found [sage] 2019/12/19(木) 09:00:50.12ID:???
function hoge(callback){
console.log( callback(10,20) );
console.log("callbackの引数の名前を知りたい xxxとyyy");
console.log(callback.toString().match(/^\((.*),(.*)\)/).filter((_,i)=>i%3!==0));
}
hoge((xxx,yyy)=>xxx+yyy);

と、しましたがもっとスッキリ書けないものでしょうか?
847 [sage] 2019/12/19(木) 09:04:39.31ID:???
引数が一個のときも考慮したいし
function()なんたらのときも
_=> みたいに()が無いときも考慮するには
やはり全部の場合分けしかないのでしょうか?
Name_Not_Found [sage] 2019/12/19(木) 10:55:15.25ID:???
引数の数が異なるなら、オブジェクト指向で言う、関数のoverload・多重定義だろ。
JavaScript には無いけど、jQuery は、引数の型を調べて、場合分けして作っていたかも?

デフォルト値ありの引数か、配列・辞書渡しにするか。
オプションなどは、辞書で渡す

引数の数が変わる、可変引数もあるのか?
Name_Not_Found [sage] 2019/12/19(木) 13:25:23.48ID:???
うるさい糖質
Name_Not_Found [sage] 2019/12/19(木) 16:02:12.63ID:???

とりあえず引数名が何個で何かを判別するオプションを引数に入れて多重定義で一時的に対応することにしました
ただ引数名は限定的になりそうなので渡す関数の書式を制限して関数そのものの文字列から判別する方法もやろうと思います
ありがとうございました
Name_Not_Found [sage] 2019/12/19(木) 16:41:00.17ID:???

関数の引数の定義上の文字列を知りたい
という要望が特殊すぎるような気が

ちなみにこの文字列を知って
どのような使い方を考えているのん?
Name_Not_Found [sage] 2019/12/19(木) 17:03:32.67ID:???

例えばforEachするときやmapするとき
最初の引数はindexだったかそれともvalueだったか?忘れてしまうことが多かったので
callbackの記述が
function(index,value),function(index),function(value),function(value,index)だったら
その通りに勝手に解釈してもらいたいなぁと思ったのです
Name_Not_Found [sage] 2019/12/19(木) 17:08:12.28ID:???

ワロタ
それは、JSでやるべきじゃないんじゃないかなあ
テキストエディタとかトランスパイラとか
JSコードになる以前の問題なんじゃないかと
Name_Not_Found [sage] 2019/12/19(木) 17:12:15.59ID:???
アロー関数使うときに、引数が一個しかなければ
i=>{}みたいに書けるけど、引数が2個の場合
(i,val)=>{}と書いて、valしか使わないのに・・
みたいな場面に出くわしてじゃあ最初から
val=>{}で書いたときはーーみたいな感じだったのです
Name_Not_Found [sage] 2019/12/19(木) 18:17:45.23ID:???

物忘れ防止なら、JSDocでも書いておけ


重要なのは、「引数の数」の方だろ
arguments.lengthやrest parameterを使え
Name_Not_Found [sage] 2019/12/19(木) 18:33:42.30ID:???
まぁ引数の数だけが問題ならイコール引数の順序を覚えている
ということなので、普通に既存のライブラリ使うかなと。
Name_Not_Found [sage] 2019/12/19(木) 19:17:54.31ID:???
そういうのは型付言語ならできるだろう

map(i:int=>i*2)
map(val:string=>var+"abc")

みたいな感じだ

だが、valもintだったらどうなるだろうか?区別がつかない。
そこでint型とindex型は分けるべきではないだろうか?

map(i:index=>i*2)
map(val:int=>val*2)

つまりこういうわけだな

そして思うのは、indexとかintという型は冗長というわけだ
ならここで型名変数という概念があっても良いのかもしれないな
型名をそのまま変数として使える書き方だ

map(:index=>index*2)
map(:string=>string*2)

夢は膨らんでいくな!
Name_Not_Found [sage] 2019/12/19(木) 19:46:17.14ID:???
いやもうふつうにあるから。
Name_Not_Found [sage] 2019/12/19(木) 20:23:04.33ID:???
あるんかーい
Name_Not_Found [sage] 2019/12/19(木) 20:55:36.34ID:???
何を言ってるんだか ここは阿呆ばかりなのか?
オーバーライドは関数と引数の取り回しが不自由なJavaのような言語で
柔軟さをなんとか実現するための苦肉の策であってJSには最も必要ない部類の機能だろ
Name_Not_Found [sage] 2019/12/19(木) 21:10:06.71ID:???
オーバーライドじゃなくてオーバーロードな(呆)
JavaじゃなくてC++の時代からあるよ
Name_Not_Found [sage] 2019/12/19(木) 21:48:09.28ID:???
オーバーライドじゃなくてオーバーロードな ←潔癖症
JavaじゃなくてC++の時代からあるよ ←アスペ
Name_Not_Found [sage] 2019/12/19(木) 22:06:27.88ID:???
jqueryでアロー関数のthisがwindowになるのなんとかならんの
$([3,4,5]).each(function(){ console.log(this) });
$([3,4,5]).each(()=>{ console.log(this) });
第一引数つかえっていう話ではなく
Name_Not_Found [sage] 2019/12/19(木) 23:34:40.44ID:???

jQueryとは関係ない。DOM APIもそうだからどうしようもない
Name_Not_Found [sage] 2019/12/20(金) 00:14:23.85ID:???
どいつもこいつもどこから突っ込んでいいのやらw
Name_Not_Found [sage] 2019/12/20(金) 06:52:41.54ID:???
そういう毒にも薬にもならない表明はいらない
Name_Not_Found [sage] 2019/12/20(金) 08:38:34.48ID:???
Name_Not_Found [sage] 2019/12/20(金) 09:38:36.23ID:???
ES6 のアロー関数は、たぶん、クロージャなんだろ。
外の環境のthis を、そこまでの文脈で、静的に確定させて取り込んでしまう

レシーバーのthis じゃない
Name_Not_Found [sage] 2019/12/20(金) 10:53:39.50ID:???
jQueryの基礎部分を書いてみたのですが
ttp://https://jsfiddle.net/5nhoL081/
これをclass構文で表現するにはどうやればいいのでしょうか?
ttp://https://jsfiddle.net/kabn84sz/
やってはみたものの動くには動いたのですが
if(!f){return thisを外したらinitがnot functionだと言われたり
腑に落ちない点がいろいろとあります
Name_Not_Found [sage] 2019/12/20(金) 11:41:18.12ID:???

jQuery関係ない

functionの中でthisはそもそもグローバル(かundefined)
メソッドやイベントリスナとして発火するときは
そのオブジェクトが束縛(バインド)される

アロー関数はイベントリスナになっても
束縛がないんだね
Name_Not_Found [sage] 2019/12/20(金) 11:43:11.56ID:???
あとjQueryのeachとかで使うthisは
ピュアJSのものではなく
jQueryが独自にバインドしているものなのでご注意を
870 [sage] 2019/12/20(金) 14:33:40.79ID:???
class Hoge{
constructor(){
console.log(new Fuga());
}
}
class Fuga extends Hoge{
f(){}
}
var hoge = new Hoge();
//Maximum call stack size exceeded
//となってしまうので
class Hoge{
constructor(f){
if(!!f){
console.log(new Fuga());
}
}
}
class Fuga extends Hoge{
f(){}
}
var hoge = new Hoge(true);
//ifをかますと親コンストラクタで子をnewできるみたいというのはわかりましたが
//これはなんかのテクニックなのでしょうか??それとも普通はこんなことしないということでしょうか
Name_Not_Found [sage] 2019/12/20(金) 15:29:56.97ID:???
ifを咬ませてfalseのとき通らない説明はしようがないね
自明だから
Name_Not_Found [sage] 2019/12/20(金) 15:34:17.63ID:???

ちなみにこの循環にはどんな意味があるん?
Name_Not_Found [sage] 2019/12/20(金) 15:48:06.84ID:???

>falseのとき
!じゃなくて!!なので、つまり!!trueなのでtrueです

この循環とは?
例えばライブラリにするときjqueryなら$()で何回も使えますがそれは
$()で返ってくる中身がインスタンスで、かつinitが親のjqueryのprototypeを持っているからです
別に毎回newを宣言するスタイルなら必要ないと思いますが
Name_Not_Found [sage] 2019/12/20(金) 15:55:27.94ID:???
ライブラリ内で$()を使っても循環してるわけじゃないだろ
無知って恐ろしいな
Name_Not_Found [sage] 2019/12/20(金) 15:58:25.72ID:???
いやそもそも循環って何を指しているかがわからんのです
Name_Not_Found [sage] 2019/12/20(金) 16:54:52.49ID:???
Hogeがコンストラクタ関数でnew Fuga() してるのに
FugaがHogeを継承しちゃってるからループして
なんどもなんどもフガフガしちゃって
Maximum call stack size exceeded なわけじゃん?

なんでFugaはHogeを継承すんのかなって
Name_Not_Found [sage] 2019/12/20(金) 16:55:43.34ID:???
FugaからHogeを参照したいだけなら
Hogeのコンストラクタ関数で

new Fuga(this);

ってするだけじゃいかんかね?
Name_Not_Found [sage] 2019/12/20(金) 18:28:27.93ID:???
,879,880
なるほど、心をまっさらにして改めて考えたところ、すんなり解決しました
ttp://https://jsfiddle.net/4o3zq1v5/
initをextendsするのはなぜなのかはわかりませんがそのバージョン
ttp://https://jsfiddle.net/pmrhub5y/
そもそもjQueryのソースコードをみるとなぜわざわざinitを継承させているのか
はわかりませんが、つまり
ttp://https://jsfiddle.net/rb5czox2/
こういうふうにすればいいのに、と思うのですが・・
$文字で静的なユーティリティ関数を使えるからでしょうか($=jQueryと置くとinitをnewしないといけないので)、わかりません
Name_Not_Found [sage] 2019/12/20(金) 18:36:34.84ID:???
一応ソースコードそのまま風にinitを継承したやつです
ttp://https://jsfiddle.net/ca98kq0z/
Name_Not_Found [sage] 2019/12/20(金) 20:17:42.83ID:???

いやいや、空呼びすることになるんだから評価はfalselyでしょ
trueは最初だけじゃん何いってんの
Name_Not_Found [sage] 2019/12/20(金) 20:41:12.89ID:???

空呼びとは?
いつ、空呼び?(具体的な行なりを)
最初だけ、とはいつ?(具体的な行なりを)

>falseのとき
>873コードのどのタイミングで>falseのとき、なのか
>通らない
とは何が?
Name_Not_Found [sage] 2019/12/20(金) 20:59:38.09ID:???
なんでこれだけヒント上げてんのにconsole.log()を挟んだりして確認しないの?
いつ何がなんて考えたら分かるし
分からないのなら色々試して分かるように見つけるべきでしょ
あんだけの短いコードなんだから

それともnew演算子の挙動から丁寧に何レスも使って長大にド答えを書いてほしいの?
Name_Not_Found [sage] 2019/12/20(金) 21:04:57.57ID:???
あー…分かんないやつは無理して回答するフリしなくていいからw
Name_Not_Found [sage] 2019/12/20(金) 21:17:34.83ID:???
わからないことは
『>873コードの前半はエラーがでて、後半のコードでは、エラーが出ない、それはなぜか』
ということで、わかってることは
後半コードで『なぜかif()で一旦”間”をとると、エラーが出ない』
ということと『仮に、親の中で子をnewするとエラーがでるなら、後半コードでもif通ったあとにエラーがでるのでは?』
というところまでは、わかっています
その状態で873を質問をしたわけなので
>874で急にfalseの話が出て、ヒントとか以前の問題で
どういうこと?っていう状態なので確認のために>884を聞いたんです
ヒントが欲しいってことではないです
Name_Not_Found [sage] 2019/12/20(金) 21:18:47.10ID:???
訂正 >親の中で子をnewすると
>親のコンストラクタの中で、子をnewすると
Name_Not_Found [sage] 2019/12/20(金) 21:21:21.72ID:???
じゃあ逆に考えてみたら良いじゃない
デバッグの基本だよ
後半コードでもif通ったあとにエラーがでるのでは?
ならエラーが出てないのならifを通ってないのでは?
あれどうして通ってないんだっけってなるでしょ
Name_Not_Found [sage] 2019/12/20(金) 21:25:46.38ID:???

いえ、、それでconsole.log(new Fuga());
が出力されたわけでして・・
Name_Not_Found [sage] 2019/12/20(金) 21:29:24.97ID:???
if(!!f){
の前に
console.log(f)
でしょ
if(!!f)の動作はfに依存してるのだから、fを調べないと始まらないでしょ
Name_Not_Found [sage] 2019/12/20(金) 21:31:44.48ID:???

ええ、もちろんしてからの>873の質問ですよ
で、>874でなんでfalseの話が出てきたのだろう??ってなったんです

ちなみにもしかして
class Hoge{
constructor(f){
if(!!f){
console.log(new Fuga());
}}}
class Fuga extends Hoge{
f(){}
}
var hoge = new Hoge(true);
これが通るのっておまかんってことでしょうか?
念の為、これ↓はtrueですよね
if(!!true){ console.log(true) }else{ console.log(false) }
Name_Not_Found [sage] 2019/12/20(金) 21:33:03.22ID:???
最初は>874さんが!fと!!fを見間違えただけなのかな?と思ってたのですが
違うっぽい?
Name_Not_Found [sage] 2019/12/21(土) 00:47:36.03ID:???

まずの前半の方は

Hogeはコンストラクタ関数でnew Fuga()って書いてるので
new Hoge() でコンストラクタ関数が発火して、new Fuga()
このFugaはHogeを継承してるから
Hogeのコンストラクタ関数がまた走る
Hogeのコンストラクタ関数がまた走る
Hogeのコンストラクタ関数がまた走る
 :
っていう無限ループ


if節をもちいた後半に書いてあるやつは

1回目は var hoge = new Hoge(true); ってしてるから
Hogeのコンストラクタ関数にはtrueが渡り
if節がtrueだから、new Fuga()する
このFugaはHogeをextendsしてるから
Hogeのコンストラクタ関数がまた走るけど(2回目)
このときは引数なしだからif節はfalseになり、動かず終わる
Name_Not_Found [sage] 2019/12/21(土) 06:22:42.58ID:???
まず自分が間違ってるんじゃないかという姿勢がないとデバッグはできない
もちろん機械が間違っていることもあるが、それは雰囲気ではなくて言い逃れできないくらいの
理詰めと証拠と再現性による証明ができて初めて主張できること
Name_Not_Found [sage] 2019/12/21(土) 07:55:11.97ID:???
自分が間違っていると思う自分は間違ってる
Name_Not_Found [sage] 2019/12/21(土) 08:18:46.49ID:???

なるほど
>空呼び
とは、FugaがnewされてHogeコンストラクタ関数が走る、
>いつ、>falseのとき
2回目以降のことだったんですね
(2回目以降のreturnでvar hogeに格納されない)

つまり疑問である
>これはなんかのテクニックなのでしょうか??
>それとも普通はこんなことしないということでしょうか
は、回避処理をしたとしても普通は"空呼び"はやらない and 親のコンストラクタ内で子をnewしない(機会はない)
ということでしょうか
というのは、>870のライブラリの基礎部分をclass構文で表現してみたい
というのが本題で、kabn84szコードは$()すると毎回、return this(親?)”も”しているので
無駄や不自然さがあると、今回のやりとりで感じました
なのでのpmrhub5yコードがclass構文表現の一例でいいかなと
新たに出た疑問は
・『全部まとめて毎回親をnewする』4o3zq1v5コードと『毎回継承の子だけnewする』pmrhub5yコードの(コードの見た目以外の)違いや利点がわからない
・class表現にした場合、$文字で親の静的メソッドが使えない($.eachじゃなくjQuery.eachとしないといけない?)
この辺りを調べてみたいと思います
ありがとうございました
Name_Not_Found [sage] 2019/12/21(土) 09:02:29.10ID:???
gotoはコードの色んな所にジャンプできる。
だけどbreakはループの外にしかジャンプできない。

gotoの方が優れているように見えるが、
機能を制限したbreakの方が好まれてる。

何が言いたいかというと汎用的なものより
特定の(よく使われる)用途に制限したほうが
バグが少なくなり、コードはよりわかりやすくなる

それがclassでありシンタックスシュガーが優れていると言われる理由
だけど、機能自体はgotoの方が上なわけで
人が間違わないという前提にたてば、機能を制限したものよりも
より多くのことができる。つまりclassを使わないほうがより柔軟
Name_Not_Found [sage] 2019/12/21(土) 09:32:58.51ID:???
なるほど 時代の流れはclass表記のみなっていくのかと勝手に思っていましたが
固執すること無く適所に取捨すればよかったのですね
(同じ変数名で親の静的メソッドも実行できるというのはやはり魅力なのでclass表記は向いていない、のかもしれない)
あとプログラミング言語界も、文書でいうところの”ですます”調・”だである”調は揃える、
みたいなことは気にしたほうがいいのかどうかは気になります
Name_Not_Found [sage] 2019/12/21(土) 12:27:01.80ID:???
JSのクラス構文は何かを制限するような機能はまだ弱いしその様には使われていない
見た目と構造化効率のために使われている
Name_Not_Found [sage] 2019/12/21(土) 12:39:57.69ID:???
今はTypeScriptも人気あるしねぇ。必ずしもclassありきじゃない。
Name_Not_Found [sage] 2019/12/21(土) 15:43:42.70ID:???
空呼びwww
コンストラクタ関数が発火wwwww
Name_Not_Found [sage] 2019/12/21(土) 16:47:55.09ID:???
プププ
Name_Not_Found [sage] 2019/12/21(土) 17:44:09.74ID:???

>親のコンストラクタ内で、子をnewしない
こんな事をする香具師は、いないw

逆に、子のコンストラクタ内で、
super( ) みたいに、親のコンストラクタを呼び出す言語は、あるかも

一般的に、オブジェクト指向では、
子のメソッド内で、super( ) みたいに、親の同名のメソッドを呼び出す言語は、あるかも

子は親を継承しているから、親の部分を含んでいる。
だから、子を作る時に、親の部分も作るから、
その時に、super( ) を呼んで、親の部分をカスタマイズしたい
Name_Not_Found [sage] 2019/12/21(土) 18:02:44.26ID:???
rubyキチガイは呼んでない。
Name_Not_Found [sage] 2019/12/21(土) 19:50:22.99ID:???
すでにアクティブな未知のsetIntervalを止める方法良い方法ないですかね
今はclearInterval(i);で10回とか適当な数まで回して止めてるんですけど
Name_Not_Found [sage] 2019/12/21(土) 20:56:01.62ID:???
コンセントを引っこ抜く
Name_Not_Found [sage] 2019/12/21(土) 21:22:08.47ID:???

超ありがとうございます。
まさかオブジェクトが定義中だったとは思いもしませんでした。
一度オブジェクトの定義を済ませた後にプロパティを追加すればよいのですね!!


追加で質問がありまして、 さんの記述に近いのですが、
下記記述のように関数の中であれば、定義中のオブジェクトのプロパティを扱うことができるようなのですが、
エラーにならないのは、オブジェクトの定義が済んだ後に関数を呼び出しているから・・・
と考えればよいのでしょうか?

var obj = {
a: 3,
b: 4,
c: function() {
 console.log(obj.a + obj.b);
 },
};
obj.c(); // 7
Name_Not_Found [sage] 2019/12/22(日) 03:39:46.30ID:???
うん
Name_Not_Found [sage] 2019/12/22(日) 07:42:04.75ID:???
Ruby でもそうだが、一般的に、地の文は、実行されるコード・実行文で、
関数は、呼び出されるまで実行されない

f( ) みたいに、( )は関数呼び出し演算子で、( )を付けると実行される
Name_Not_Found [sage] 2019/12/22(日) 07:50:24.63ID:???
Ruby笑
Name_Not_Found [sage] 2019/12/22(日) 10:07:30.12ID:???
こいつの頭のおかしいところは、これでrubyとかいうクソ言語の宣伝になると思ってるところ
Name_Not_Found [] 2019/12/22(日) 13:14:10.21:oVbXcFto
スレタイも読めないガイジになに言っても無駄だな。
Name_Not_Found [sage] 2019/12/22(日) 17:42:59.64ID:???
10年前ならまだしも今のこの過疎2chと繁栄したJS界を鑑みるにRubyの4文字程度に反応する必要もない
Name_Not_Found [sage] 2019/12/22(日) 17:47:47.93ID:???
地の文というパワーワード
Name_Not_Found [] 2019/12/22(日) 17:51:31.35:RxOT0v4o
【環境】Windows10 IE11
前提として複数URL文字列が格納された配列を保持しています
これらを全て(できるかぎり)自動で印刷する動作を実現したいです
まず下記を書きました
function hoge{
for(var i = 0; i < url.length;i++) {
subwin = window.open(url[i],"_blank","top=0,left=0");
subwin.print();
subwin.close();
}
}
エラーは発生しませんでしたが、全てのURLが子画面で同時に開かれ、
さらに印刷ダイアログが開かれた子画面は1個だけしか残りませんでした

【期待する結果】
親画面でボタンが押される→
→url[0]が開かれ、自動的に印刷ダイアログが表示→印刷ボタンを押すと自動的に閉じられる
→url[1]が開かれ、自動的に印刷ダイアログが表示→印刷ボタンを押すと自動的に閉じられる
→全ての配列分繰り返す

…という流れにしたいのですが、IE11の印刷ダイアログ画面は常に一つしか開けないようで
そこでさらにwindow.openすると強制的に閉じられてしまい、さらにその後のwindow.closeで勝手に閉じられ
結果的に印刷ボタンを押せるのは1つだけ、という状況のようです
これを解決する方法があれば教えていただきたいです
Name_Not_Found [sage] 2019/12/22(日) 18:40:52.41ID:???
ActiveXを使ってシリアルポートを叩いてプリンタの状態を確認すればできる
Name_Not_Found [sage] 2019/12/22(日) 19:27:33.79ID:???
閉じられたら次を開けばいい 一度に全部開くやつがおるか アホか
Name_Not_Found [sage] 2019/12/22(日) 19:33:25.43ID:???
selenium webdriver で、ブラウザを自動操作して、印刷できないのかな?
Name_Not_Found [sage] 2019/12/22(日) 21:06:45.21ID:???

onunloadを書くとしたら子窓が閉じられる時になると思いますが
そうなると次に開くURLをリレーのように渡し続ける必要がありませんか
Name_Not_Found [sage] 2019/12/22(日) 21:21:38.71ID:???
 無理かも
var url=["ttp://https://google.com/","https://twitter.com","https://google.co.jp/"];
function subwinprint(){
console.log("subwin print");
var _url=url.shift();
if(!_url){ return; }
var subwin = window.open(_url,"_blank","top=0,left=0");
subwin.print();
subwin.close();
}
window.onafterprint = subwinprint;
subwinprint();
Name_Not_Found [sage] 2019/12/23(月) 01:28:37.20ID:???

リレーのように渡し続けたら?
Name_Not_Found [sage] 2019/12/23(月) 02:05:53.32ID:???
916です

ありがとうございます
残念ですが思ったような動作はしませんでした(url[1]とurl[2]が同時に開かれました)

後付けになってしまって申し訳ありませんが、
配列として保持するURLも自分の管理内なので子画面にもJavascriptは自由に記述できます
なので、onbeforeunloadとwindow.openerで子画面が閉じられる際に親画面に何らかの処理を
渡せれば…と今のところ考えています
Name_Not_Found [sage] 2019/12/23(月) 09:20:13.08ID:???
>子画面にもJavascriptは自由に記述できます
と、なるとURLは新しいタブで開くようにして
親に、
var turn=1;
var url=["ttp://https://google.com/","https://twitter.com","https://google.co.jp/"];
document.addEventListener('webkitvisibilitychange', function(){
if(url.length===0){return}
if (!document.webkitHidden && turn===2 ) {
window.open(url.shift());//@
}
turn=3-turn;
}, false);
window.open(url.shift());
子に、
プリント画面終了を感知したらwindow.closeする処理

→親タブに戻る→@→子→親タブに戻る→@・・・
になるような
Name_Not_Found [sage] 2019/12/23(月) 09:21:23.94ID:???
全部一画面に表示して
1つ1つの間で改ページするようにしたらいかんの?
Name_Not_Found [sage] 2019/12/23(月) 22:27:30.58ID:???
ひょっとしてプリント画面は、HTML じゃなくて、OS のネイティブの画面なのか?

それなら、Ruby, Node.js みたいなサーバーじゃないと、
ローカルPC 機能にアクセスできないのかも

それか、selenium webdriver か
Name_Not_Found [sage] 2019/12/24(火) 08:53:28.44ID:???
帰っていいよ。
Name_Not_Found [sage] 2019/12/24(火) 14:33:49.41ID:???
スレチ
Name_Not_Found [sage] 2019/12/24(火) 20:28:41.06ID:???
家に帰ってこのスレを開くのが唯一の楽しみなのに
帰っていいと言われたら一体どうすれば良いんだ?
Name_Not_Found [sage] 2019/12/24(火) 22:44:32.89ID:???
このスレには隙あらばRubyの話しようとする困ったちゃんがいるのよ
そいつと勘違いされてるんだ
Name_Not_Found [sage] 2019/12/24(火) 22:44:57.67ID:???
あと今日くらいは別のこと楽しもう?( ;∀;)
Name_Not_Found [sage] 2019/12/25(水) 09:57:45.35ID:???

矢田亜希子
JAVAscript楽しいんだもーん
Name_Not_Found [sage] 2019/12/25(水) 10:39:38.25ID:???
テスト中
Name_Not_Found [sage] 2019/12/25(水) 11:03:26.60ID:???
この時期になるとやたらこじつけでクリスマスネタぶっ込みたがる奴いるよな
ウッキウキで書き込んでるんだろうけど正直見てて寒い
Name_Not_Found [sage] 2019/12/25(水) 12:17:38.63ID:???
ローカルPC 機能にアクセスするなら、PCのアクセス権限が必要。
必ずユーザーの手動による、アクションが必要

PC内で、Ruby, Node.js みたいなサーバーを立てて、サーバーがOS ネイティブ機能を使う

VSCode などのElectron アプリはそう。
Electron = Node.js + Chromium

単純なHTML, CSS, JavaScript じゃなく、
サーバー・ブラウザの両方を含んでいるから、300MB とか、サイズが大きい

スマホアプリと同じ。
これも、スマホ内のネイティブ機能を使う、権限を許可するだろ

Electronではじめるアプリ開発
JavaScript/HTML/CSSでデスクトップアプリを作ろう、2017

この本では、PDF 印刷機能を実装しましょうとか、OS のネイティブ機能を使っている。
他にも、ファイル保存ダイアログを表示して、PC内のフォルダを選択したり
Name_Not_Found [sage] 2019/12/25(水) 17:20:21.74ID:???
objectにgetterを付与するとき
var obj={
b:1,
get a(){ return this.b*10 },
};
console.log( obj.a );
みたいにしますが、
var obj={ b:1 };
したあとに、getterするにはどうしたら良いですか?
最初にgetterだけして、後からプロパティみたいな方法しかないのでしょうか
Name_Not_Found [sage] 2019/12/25(水) 18:40:40.34ID:???
Object.defineProperty(obj, "a", { get: function() { return this.b * 10 } });
Name_Not_Found [sage] 2019/12/25(水) 19:00:00.58ID:???
secondParagraph
secondButton

上記みたいに最初は小文字で後から大文字にしないといけないのですか?
全部小文字の方がミスしなくて良いのですが・・・・
質問内容がド素人すぎてすいません
Name_Not_Found [sage] 2019/12/25(水) 19:25:10.04ID:???
My big dickみたいに複数の単語から成る名前を識別子にするとき、どうスペースを詰めるかという方法論であり、言語によって強制されてたりどうでもよかったりする。
ちなみにJavaScriptはどうでもいい族。
また言語では強制していないが、コーディングスタイルやはたまた開発チーム内のローカルルールで決められていることもままある。
だからあなたがクリスマスに独りで開発していて、コーディングスタイルなんて気にしない人であれば、全部小文字でもまったく問題ない。
ちなみに…
MY_BIG_DICK 定数用途
my_big_dick 変数用途 スネークケース
MyBigDick jsクラス名など アッパーキャメルケース
myBigDick 変数用途 キャメルケース
my-big-dick CSSクラス名など ケバブケース
Name_Not_Found [sage] 2019/12/25(水) 19:53:42.61ID:???

ありゃしゃす
それですarrayのconcatみたいなやつ 思い出しましたdefineProperty
concatと違いシャローコピーのようですね
Name_Not_Found [sage] 2019/12/25(水) 20:03:01.69ID:???

勉強になります
ありがとうございます!!
Name_Not_Found [sage] 2019/12/25(水) 20:22:27.38ID:???

そういう長い変数名はつけてはいけない
スコープを切って解決するならそうして、
そうでなければbutton.secondに格納する
Name_Not_Found [sage] 2019/12/25(水) 20:29:48.64ID:???

質問スレなんだから、これこれこうだから付けてはいけない、というふうに根拠を示せよrubyキチガイ。
説明できないというのは自分がわかってないからだぞ。
答えを言えばいいというものではない。
Name_Not_Found [sage] 2019/12/25(水) 21:02:13.56ID:???

なんだよその例w
Name_Not_Found [sage] 2019/12/26(木) 00:20:31.34ID:???

ここは自ら学ぶ人のための質問スレ
色んな回答者が出した意見を好きなだけ汲み取って質問者の中で答えを出すためのスレ
質問者が自ら興味を持って深堀りしたいければさらに回答者に聞けばいいだけ
回答者が最初から全ての説明を提示する必要はない

ノーヒントの状態で方法が何も思いつかないということはあるが
ここで沢山出た意見の内何が最も優れてるかは質問者が自ら考え試してみて
質問者のセンスで正解を決めればよいこと
つまり君の目線でどの回答者がどれくらい分かっているかというのは無価値な話

あちこち叩かれればそのうち自然と球に近づくのだから
色んな視点からの色んな場合の意見を見ることが良い価値観を育てる行為
最初から何かを限定したりイチャモンをつけようという姿勢は良くない
Name_Not_Found [sage] 2019/12/26(木) 00:26:03.06ID:???
3行で。
Name_Not_Found [sage] 2019/12/26(木) 02:13:21.53ID:???
最初と最後の2文だけ読めばいい
Name_Not_Found [sage] 2019/12/26(木) 10:36:08.90ID:???

そう?
その変数が何かを誤認しなくなる要素は
少しでも多く残したくね?
Name_Not_Found [sage] 2019/12/26(木) 19:28:53.44ID:???

Javaならそうだな
スクリプト言語には似合わない
Name_Not_Found [sage] 2019/12/26(木) 19:47:40.45ID:???
その差がわからん
Name_Not_Found [sage] 2019/12/26(木) 19:50:41.71ID:???
おっと次スレ
+ JavaScript の質問用スレッド vol.143 +
ttps://mevius.5ch.net/test/read.cgi/hp/1577357404/
Name_Not_Found [sage] 2019/12/26(木) 23:55:07.87ID:???
初心者すぎてすいません
getElementById
ってどういう意味ですか?
Idをつけた箇所に来たら何かを稼働させるって事ですか?
Name_Not_Found [sage] 2019/12/27(金) 00:10:53.62ID:???

引数で指定されたIDを持つHTML要素のオブジェクトを返す
Name_Not_Found [sage] 2019/12/27(金) 07:23:20.20ID:???

たとえばキミがElementだとしてIdがtaroだったとする
で、おれがgetElementById('taro')するとキミ(taro)を取得し
キミの服装を変えたり、しゃべらせたり、歩かせたり、髪型を変えたりできる
例)
var taro=getElementById('taro'); //取得
taro.style.color='blue'; //taroElement内の文字の色を変える
Name_Not_Found [sage] 2019/12/27(金) 09:00:30.12ID:???
多次元配列をディープコピーしたいのですが
var arr=[['a','b'],['c','d']];
var arr2=JSON.parse( JSON.stringify(arr) );
arr2[1][0]='e';
console.log(arr,arr2);
これ以外だと配列ループするしかないですか?
Name_Not_Found [sage] 2019/12/27(金) 09:54:17.16ID:???

ループとは?
何を使おうが、配列の要素を走査する処理は走る
Name_Not_Found [sage] 2019/12/27(金) 13:46:19.56ID:???

配列は広義の意味ではなく上の例だとarrのループです
Arrayのみならこんな感じでしょうか?↓
var deepCopy=function(obj){
var arr=[];
if(Object.prototype.toString.call(obj)==="[object Array]"){
obj=obj.concat();
for (var i=0;i<obj.length;i++){
arr.push(deepCopy(obj[i]));
}
}else{
return obj;
}
return arr;
}
var arr=[["a","b"],["c","d"]];
var arr2=deepCopy(arr);
arr2[1][0]="e";
console.table(arr);
console.table(arr2);
Arrayだけじゃないともっと複雑になりそうな気がしますが
JSON.parse( JSON.stringify(arr) );以外になにか方法ないのかなと思いました
Name_Not_Found [sage] 2019/12/27(金) 18:23:26.91ID:???
再帰
Name_Not_Found [sage] 2019/12/27(金) 20:11:41.00ID:???
function deepCopy ( obj ) {
return new Promise( done => {
let mc = new MessageChannel
mc.port2.onmessage = e => done( e.data )
mc.port1.postMessage( obj )
} )
}

let ary1 = [ [ 'a', 'b' ], [ 'c', 'd' ] ]
let ary2 = await deepCopy( ary1 )
Name_Not_Found [sage] 2019/12/27(金) 20:39:16.22ID:???
jQuery のdeepcopy。
var newObj = $.extend(true,{},sourceObj)

javascriptでlodashを使ってディープコピーを簡単に行う
ttp://https://qiita.com/t-motoki/items/5685d302e2e242f561b4
秀丸使いのtaro [sage] 2019/12/27(金) 20:56:51.70ID:???

す、す、すげええ
わ、わ、わかりやすい
感謝っす
javascript頑張ります!!
Name_Not_Found [sage] 2019/12/27(金) 21:47:31.29ID:???

の「配列ループ」の説明になっていないようだが?

二次元配列にdeepcopyなど不要
var array1 = [["a","b"],["c","d"]];
var array2 = array1.slice().map(array => array.slice());
console.log(JSON.stringify(array1) === JSON.stringify(array2));

まあ、deepcopyが必要となる状況がそもそもないようにコードを組むがね
DOMのcloneNodeのように、新しい概念上で必要な場合もあるが、それも新しくclassを作って複製可能なように作っておく
Name_Not_Found [sage] 2019/12/27(金) 22:44:10.72ID:???
本当に全プロパティを複製する必要があるのか?
Proxyを作って更新があったものだけキャッシュしとく方が効率的なこともあるだろう
Name_Not_Found [sage] 2019/12/27(金) 23:56:52.55ID:???
こんにちはをこんばんはに変更する場合、パターン1とパターン2のどっちがナウいですか?
原宿とかのスタバでコーディングしてて、エンジニアにチラ見されて恥ずかしくないのはどっちですか?

【パティーン1】
index.html
<p>こんにちわ</p>
script.js
$('p').text('こんばんは');


【パティーン2】
index.html
<p>こんにちは</p>

script.js

$('p').html('<span>こんばんは</span>');
Name_Not_Found [sage] 2019/12/28(土) 00:22:24.26ID:???
ナウくしたいならVueとか使えば
964 [sage] 2019/12/28(土) 00:38:20.32ID:???

ナウ過ぎるのも嫌なんだよ
でパティーン1と2でどっちがいいの?
Name_Not_Found [sage] 2019/12/28(土) 05:10:46.87ID:???
スタバでindex.htmlとscript.js睨みながら$("p")とかやってんのがいるの想像するだけで笑ってしまった
Name_Not_Found [sage] 2019/12/28(土) 05:53:56.36ID:???
,959
ありがとうございます
awaitとか調べてみたいと思います


再帰と考えてくれればいいと思います(単にコードを書くつもりでarrをループする具体的な部分を示したので)。
二次元配列というか多次元配列()です(例は2次元配列ですが)
こちらの管轄に無い配列をコピーしたいときとかですね
理想は配列以外のオブジェクトも含むケースですがまずは配列のみからやってみるという感じです
Name_Not_Found [sage] 2019/12/28(土) 07:27:59.12ID:???

どっちもダサい
Name_Not_Found [sage] 2019/12/28(土) 08:00:03.47ID:???

1だろ。2はそもそもspanが間に入ってるので意味が変わってしまってる
Name_Not_Found [sage] 2019/12/28(土) 08:20:35.64ID:???
説明してあげると、どちらもダサいって言ってる人は、タグpを使ってるからだよ。
pは普通たくさんあって他の用途でも使われるのでp全部をこんばんはに
したいことはまず無いだろうなという前提に経てば、そういうことはしない。

idを使うと言い出すやつがいるかも知れないが、一番いいのはclassを使うこと。
そうすれば変換したいこんにちはが一つでも複数でもコードは変換しなくて良くなる。

<p class="greeting">こんにちわ</p>
$('.greeting').text('こんばんは');

つまりこういうのだな。もっといいやり方は。


だがそもそもJavaScriptで文字を変えるべきことなのか?という話がある

<body data-timeframe="daytime">
<p class="daytime greeting">こんにちわ</p>
<p class="night greeting">こんばんは</p>
</body>

.greeting { display:none }
[data-timeframe="daytime"] .daytime.greeting { display:block }
[data-timeframe="night"] .night.greeting { display:block }

例えばこういうCSSとHTMLを書いておけば、data-timeframeを
daytimeにするかnightにするかで、こんにちわやこんばんはが自動的に変わる
応用で色んな部分を変えることができる。

jQueryでやるのは、このようにclassとか今回はdata-*属性を変えるだけにするもんだよ。
JavaScriptでHTMLや文字列を切り替えるのはバッドパターン
秀丸つかいのtaro [sage] 2019/12/28(土) 13:24:12.01ID:???

て、て、テクニシャンかよ
何年でそこまでのレベルに到達したの?
ちょっと憧れてしまったお
Name_Not_Found [sage] 2019/12/28(土) 13:59:30.01ID:???
上の部分は、1行目のhoverでポインタが,languageの上に乗った時に、fadeInするって意味だと思うんだけど
下の部分は、ポインタが外れた時っていう意味の単語みたいなの無いけど、なんでポインタが外れたらfadeOutするの?
なんでですか?


$('#language-wrapper').hover(
function() {
$('.language-text').fadeIn();
},



function() {
$('.language-text').fadeOut();
}
);
Name_Not_Found [sage] 2019/12/28(土) 14:10:51.79ID:???
よく見ろ下も単体じゃなくて上と一緒にhoverメソッドに渡してあるでしょ
ttp://https://api.jquery.com/hover/
hoverの第1引数がホバーした時、第2引数が外れた時に実行される関数
Name_Not_Found [] 2019/12/28(土) 15:59:23.13:WMd/dG8p

ホバーした時と、外した時で、ワンセットて事だね
そのサイトクリックしたら英語でびびったよ
まあ翻訳ソフト入れたけどね
Name_Not_Found [sage] 2019/12/28(土) 16:00:54.73ID:???
それにしてもあんたら天才だな
Name_Not_Found [sage] 2019/12/28(土) 17:48:20.83ID:???
クオンテーションやダブルクオンテーションを付けたり、付けなかったり
カンマが必要だったり、セミコロンが必要だったり・・・・
こういうのって初心者としてはツライんですが、ずっとやってれば覚えられるものですか?

質問レベル低すぎてすいません
Name_Not_Found [sage] 2019/12/28(土) 18:19:22.66ID:???
覚えるし、大した話じゃないし
vscode+javascriptの適当なプラグインで
勝手にチェックしてくれるのでどうでもいい
Name_Not_Found [sage] 2019/12/28(土) 18:59:28.29ID:???
半年もやってたら覚えるよ
Name_Not_Found [sage] 2019/12/28(土) 19:04:56.90ID:???

覚えるものではない
言語なのだから
一々ここではこの構文を使って、とか考えてる内は初心者
Name_Not_Found [sage] 2019/12/28(土) 19:31:54.56ID:???
出たエラーを見ればいい 
文字通りトライ&エラーでバカでも自然に覚える
Name_Not_Found [sage] 2019/12/28(土) 19:33:41.06ID:???

こんちわって気分のときとちーっすって気分のときもある場合どうしたらいいのですか
秀丸使いのtaro [sage] 2019/12/28(土) 20:49:29.38ID:???

VScodeですね
秀丸を捨てる時が来たようです
アドバイスありがとうございます!!

勢い5万以上のスレをメールでお知らせするサービス、実施中!!
憧れボディをGETしたい!その夢、ボニックで!

新着レスの表示

2ch勢いランキング アーカイブ Web制作板ランキング

凡例:

レス番

100 (赤) → 2つ以上レスが付いている
100 (紫) → 1つ以上レスが付いている

名前

名無しさん (青) → sage のレス
名無しさん (緑) → age のレス

ID

ID:xxxxxxx (赤) → 発言が3つ以上のID
ID:xxxxxxx (青) → 発言が2つ以上のID

このページは2ch勢いランキングが作成したアーカイブです。削除についてはこちら