のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,851人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    151 : Name_Not - 2019/10/02(水) 20:57:14.92 ID:acuNyttM.net (+9,+9,-72)
    JSONの発明者ダグラスクロックフォードはJSへのクラス構文導入に大反対だった。
    http://qiita.com/ikedaosushi/items/45652e53c06c761d8137

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

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

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

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

    イケてない言語では?
    議論に参加して良いのはイケてる言語になってからだよ。
    157 : Name_Not - 2019/10/05(土) 21:34:03.68 ID:rib7i9L6.net (+58,+29,-34)
    webSQLって開発とまってるらしいけど
    いちおうひととおり使えるれべるにはなってるかな?
    indexedDBがわけわからんしSQLの勉強もかねてつかってみたいんだけどどうなんだろ
    158 : Name_Not - 2019/10/05(土) 22:15:45.62 ID:???.net (+3,-29,-24)
    止まってるんじゃなくて放棄されてる
    IndexedDBが堅苦しいなら使いやすいライブラリを探す事をおすすめする
    http://developer.mozilla.org/ja/docs/Web/API/IndexedDB_API#See_also
    159 : Name_Not - 2019/10/06(日) 02:52:19.19 ID:???.net (+65,+29,-26)
    >>157
    廃止が決まってからも長い間残されてたけどchromeは遂に次のバージョンから削除されるってよ。
    160 : Name_Not - 2019/10/06(日) 08:13:03.90 ID:???.net (+68,+30,-72)
    >>26です
    ガワが完成し一応はリリースできるものに仕上がったのですが
    どうしても音の遅れが気になり色々調べた結果
    どうもaudioを使用する場合遅れはしゃあないって結論になりました…
    ㍉セック単位の気にしなければ気にならない遅れですがどうしようもないようです
    解決するにはweb audio APIを使うしかないみたいだけど知識0だしどうすっかなあ…
    161 : Name_Not - 2019/10/06(日) 09:51:57.47 ID:???.net (+88,+23,-5)
    いい機会だから覚えなよ。tone.js使うとか…
    162 : Name_Not - 2019/10/06(日) 12:44:56.95 ID:???.net (+13,-29,-60)
    下記jQueryのeasing関数をjavascriptのみで作った動作に組み込みたいのですが、
    引数の x, t, b, c, d, s の内、x と s の説明が見当たりません。
    何を指しているかわかる方がいらっしゃいましたら教えてください。

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

    x と s を含まない関数では、しっかりアニメーションしています。
    163 : Name_Not - 2019/10/06(日) 15:16:15.73 ID:???.net (+6,-29,-16)
    >>162
    sはマジックナンバーでググれ
    xを使う関数なんてねーよ
    164 : Name_Not - 2019/10/06(日) 18:02:13.55 ID:???.net (+74,+30,-43)
    >>161
    そういたします…
    調べれば調べるほど自分の欲しい機能がついててもうなんで始めから使わなかったのかと…
    情報がそれほど多くなく説明が専門的で理解できるか微妙ですが
    幸いあげて下さった簡易版?ライブラリもあるみたいなので頑張ってみます
    ありがとう
    165 : Name_Not - 2019/10/06(日) 19:26:26.13 ID:???.net (-6,-29,-3)
    howler.jsもあるでよ
    166 : Name_Not - 2019/10/08(火) 21:59:21.35 ID:???.net (+7,-30,-190)
    >>163
    レスどうも!
    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;
    }

    不勉強ですみません・・・
    167 : Name_Not - 2019/10/08(火) 22:50:08.88 ID:???.net (+81,+30,+0)
    168 : Name_Not - 2019/10/08(火) 23:26:55.77 ID:???.net (+67,+28,-14)
    >>167
    即効ありがとうございます。
    熟読します!
    169 : Name_Not - 2019/10/09(水) 04:39:02.31 ID:???.net (+0,-29,-14)
    >>166
    使ってないじゃん
    easeOutBounceの先見たか?
    170 : Name_Not - 2019/10/09(水) 08:42:27.50 ID:???.net (+4,-30,-136)
    >>162
    調べるなら、公式サイトをあたれ

    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;
    > },
    171 : Name_Not - 2019/10/09(水) 20:00:43.15 ID:???.net (-7,-29,-3)
    >>136
    1/2^64じゃね?
    172 : Name_Not - 2019/10/10(木) 17:13:18.90 ID:???.net (+17,-30,-31)
    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つの数字繰り返す感じのやつ教えてください
    (関数以外でできないものか気になったのです)
    173 : Name_Not - 2019/10/10(木) 18:58:54.98 ID:???.net (+57,+29,-11)
    答えを貰う度に、華麗にスルーして、新しい質問を量産する実験でもしてるのかな
    174 : Name_Not - 2019/10/10(木) 19:20:18.02 ID:???.net (+66,-30,-21)
    >>172
    var n=0;
    n=(n+1)%3; //1
    n=(n+1)%3; //2
    n=(n+1)%3; //0
    175 : Name_Not - 2019/10/10(木) 20:06:55.20 ID:???.net (+61,+29,-3)
    >>174
    うおおできました! ありゃす!!
    176 : Name_Not - 2019/10/10(木) 20:08:46.86 ID:???.net (+47,+29,-1)
    いいってことよ
    177 : Name_Not - 2019/10/10(木) 20:14:41.70 ID:???.net (+66,+29,-5)
    >>174
    他人のコードで課題提出するのってどうなんだろうね
    178 : 172 - 2019/10/10(木) 20:22:00.50 ID:???.net (+38,-30,-81)
    か、課題・・?
    単にプレイヤーについてるような
    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
    179 : Name_Not - 2019/10/10(木) 20:58:09.62 ID:???.net (+53,+25,+0)
    >>178
    やるじゃん
    180 : Name_Not - 2019/10/10(木) 21:43:07.63 ID:???.net (+3,-30,-145)
    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
    181 : Name_Not - 2019/10/10(木) 21:43:17.01 ID:???.net (+12,-30,-130)
    >>178
    ジェネレータで無限数列イテレータ作ってもええな。
    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…
    犬も歩けば…
    182 : Name_Not - 2019/10/10(木) 21:46:42.07 ID:???.net (+57,+29,-7)
    なんでそういう仕様になってるんだろ?
    引き続き.next()やらofやら...やらしたいぜ!
    183 : Name_Not - 2019/10/11(金) 06:40:51.36 ID:???.net (+0,-29,-2)
    >>181
    nをクリアしないならbigintでやるべき
    184 : Name_Not - 2019/10/11(金) 08:19:58.27 ID:???.net (+57,+29,-4)
    その必要はない。プログラムよく読め。
    185 : Name_Not - 2019/10/11(金) 08:41:01.26 ID:???.net (+59,-30,-243)
    初学者です、色々勉強させて頂いてます

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

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

    をループで回したのち、しかるべき要素内にappendなりinnerHtmlなりして挿入を試しています。
    たとえば1000件だとChromeだと一瞬なのですが、Edgeだと1秒近くかかってしまいます。
    console.timeなどでどこが遅いかを調べてみると、遅いのはforではなく、appendなどのDOM追加部分であることは分かりました。
    DOMの追加の方法は様々あるようですが、いずれもEdgeだと大変遅い状態です。
    テンプレで、各種ブラウザによって最適化が異なる、との文言を見ましたが、例えば上記の件だと、高速に挿入するには他にどのような手法が考えられそうでしょうか。
    186 : Name_Not - 2019/10/11(金) 08:56:58.79 ID:???.net (+73,-29,+0)
    >>185
    DocumentFragment
    187 : Name_Not - 2019/10/11(金) 09:02:01.86 ID:???.net (+215,+29,-73)
    程度の問題でchromeだろうが何千何万ものDOM要素を扱うとやっぱり重い。
    バイナリエディタ作ってるときにその問題に遭遇して、googleのスプレッドシートどうやってるんだろうと思って見てみたらなるほどCanvasで実装されてた。
    188 : Name_Not - 2019/10/11(金) 11:22:04.83 ID:???.net (+112,+29,-121)
    >>187
    昔、エクセルのスプレッドシートみたいに
    縦横のテーブル+上と左のヘッダ(A1 A2 みたいなやつ)を
    作ろうとしたら難しかった(その時は諦めた)事があるよ

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

    DOMではそんなこともできないんですよ。
    189 : Name_Not - 2019/10/11(金) 11:52:56.04 ID:???.net (+83,+29,-149)
    >>188
    昔は知らないが今はposition: stickyとかあるし簡単に出来るような気が…
    >>187で言ってんのはあくまでパフォーマンスの問題ね。
    読み込んだファイルを1バイト16進テキスト一つ当たり1DOM要素に割り当てたら、軽いファイルなら全く問題ないのだが数百キロバイトのファイルだともうガッタガタだった。
    googleみたいにcanvasで実装せず、あくまでDOMにこだわるならinfinite scrollみたいなDOM要素使い回しの実装をやらないとダメだろうなぁ。
    190 : Name_Not - 2019/10/11(金) 12:19:04.18 ID:???.net (+77,+24,-12)
    >>187
    「1000個のdiv >>185」「何千何万のtable >>187」では状況が違い過ぎなのでは?
    191 : Name_Not - 2019/10/11(金) 12:53:28.50 ID:???.net (+18,-30,-79)
    なんだろ、htmlテキストからDOM構築するのに時間かかってるのかな?
    src付きimgタグ1000個だもんな。
    document.createElement('img')で一個作って、
    ループ内で.clone()して.src設定してdocumentFragmentにappendしてみては?
    192 : 185 - 2019/10/11(金) 13:12:43.93 ID:???.net (+98,-30,-193)
    documentFragment、試させて頂きました
    DOMへの追加が爆速になり感動しました

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

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

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

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

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

    様々な回答ありがとうございます。
    193 : Name_Not - 2019/10/11(金) 15:45:31.30 ID:???.net (-1,-29,-13)
    > (画像はループ前にnew Image)

    今度はそれが重くなってるんじゃねーの?
    194 : Name_Not - 2019/10/11(金) 16:25:36.12 ID:???.net (+175,-30,-224)
    http://dl.dropboxusercontent.com/s/8zywbtzce1qmysi/%E6%8B%98%E5%BC%95%E7%AA%93%E8%A1%A8%E7%A4%BA.html

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

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

    どうにかしてクロスブラウザで、Chromeのwindow.innerWidth系の仕様にあたる数値を取得できないでしょうか
    195 : Name_Not - 2019/10/11(金) 16:38:04.05 ID:???.net (+53,-30,+0)
    Firefoxではこのようにdialog生成時点で表示倍率が高い場合に、合わせて小さくなります
    ちなみに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);
    });
    })();
    196 : Name_Not - 2019/10/11(金) 16:59:22.89 ID:???.net (+112,+29,-58)
    連投失礼します
    ChromeのGIFにデバッグの数字しか見せてなかった……意図通り動作しているところ入れるの忘れてたので貼っておきます
    表示倍率に関係なく、文書の表示領域基準になっているのが判ると思う
    197 : Name_Not - 2019/10/11(金) 17:07:01.15 ID:???.net (+107,+29,-3)
    同じGIF貼ってしまった……本当にすみません
    こっちです
    198 : Name_Not - 2019/10/11(金) 18:53:13.88 ID:???.net (+75,+29,-23)
    >>194
    常に固定サイズフォントってアクセシビリティが恐ろしく良くない実装だな…
    199 : Name_Not - 2019/10/11(金) 19:27:14.90 ID:???.net (+36,-30,-129)
    objectの要素名って先頭は数字ダメって昔習った気がするのですが今でもダメでしたっけ?
    var obj={
    "329435e5e66be809a656af105f42401e":"hogehoge",
    "73bb3253f355e9f0325b4b0b373d27ba":"fugafuga"
    };
    こういうのです。問題なくできました
    もしかしたら”先頭数字ダメ”というのが記憶違いだったかもしれません
    200 : Name_Not - 2019/10/11(金) 19:48:27.68 ID:???.net (+57,+29,-20)
    クオート無しやドット記法で使えないから初心者向けにそういう説明したんだとおも
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について