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

    私的良スレ書庫

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

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    751 : Name_Not - 2021/03/21(日) 10:33:31.70 ID:???.net (-29,-30,-83)
    KeyboardEvent で code, shiftKey,... とかの組み合わせ値から現在のキーボードレイアウトでの key を事前に求める、または逆に key から(ShiftLeftとか無理ですが)組み合わせを推定する手段は、標準では用意されてないでしょうか?
    754 : Name_Not - 2021/03/21(日) 12:40:00.30 ID:???.net (+37,+29,-119)
    WASDを使うならユーザーにWASDを使いますと案内するわけで
    キーボードの全体図を出してこの位置のキーを使いますと案内するわけじゃないでしょ
    だったらcodeで認識するのは変で、keyで素直に認識すればいいだけ
    ユーザビリティを考えるのであれば、キーコンフィグ機能を付ければいい
    それで解決
    755 : Name_Not - 2021/03/21(日) 12:57:27.45 ID:???.net (+32,+29,-7)
    >>754
    手段は標準では存在しない、でいいんですね?
    756 : Name_Not - 2021/03/21(日) 13:06:03.99 ID:???.net (+32,+29,-41)
    君がどういう目的で、どういう結果を求めているかイマイチわからない

    そもそもキーボードっていうのはOSに複数接続可能だし、ソフトウェアキーボードもある
    形も配置も、どんなキーがあるかも様々だ
    それを踏まえてもまだ何かをしたいっていうのであればもっと詳しく書いてくれよ
    757 : Name_Not - 2021/03/21(日) 14:54:06.54 ID:???.net (-27,-30,-111)
    ぶっちゃけ keydown と keyup で key は違ったりすることもあるので key は使いにくい

    keydown shift
    keydown A
    keyup shift
    keyup a

    どちらも code="KeyA"
    かといって code はキートップ文字を表さない位置情報だからコンフィグで指定させるキートップ文字と対応できない


    ブラウザは現在のキーボードレイアウトを参照していなければキーを返してくることは出来ないのが道理
    ならば、code + shiftKey等を元に key
    もしくは、key + shiftKey等を元に code
    と片方からもう片方を求める手段は、標準としては用意されてないでしょうか?
    と質問しています
    758 : Name_Not - 2021/03/21(日) 17:00:54.65 ID:???.net (-26,-29,-49)
    まだ良くわからんのだが
    keyを元に、実際のキートップに印字されてる文字を取りたいってことなら、
    KeyboardAPIのgetLayoutMapを使えばできるけどそういうこと?
    759 : Name_Not - 2021/03/21(日) 17:11:16.25 ID:???.net (+24,+29,-8)
    >>758
    そうです!

    と、調べてみると実験的で Firefox だと動かないのか……残念
    760 : Name_Not - 2021/03/21(日) 19:47:18.65 ID:???.net (+46,+29,-28)
    質問です
    JSのプロパティとは、他の言語で言うところのフィールドと同じような意味と
    捉えてよいでしょうか?
    761 : Name_Not - 2021/03/21(日) 19:55:47.67 ID:???.net (-29,-30,-45)
    いや、例えばC#のプロパティと同じでフィールドとは別に存在してるよ

    this.xxxx = xx;
    として作るフィールド
    get xxxx() {return xx;}
    として作るプロパティ(setter では get ではなく set)
    どちらも instance.xxxx としてアクセスできる
    762 : Name_Not - 2021/03/21(日) 22:23:53.20 ID:???.net (-28,-30,-280)
    >>760
    オブジェクトのプロパティはオブジェクトに定義されてるkey-value pairのこと
    JavaやC#で言うフィールドとは少し違う

    var foo = {
    bar: "foo",
    baz: "30",
    qux: function() {
    console.log(this.name, this.age);
    }
    }

    上の例ならbar, baz, quxすべてオブジェクトのプロパティ
    (それ以外に__proto__も定義されるけどそれはおいおい理解すればOK)
    オブジェクト自体をkey-value pairを格納するものだと捉えておけばいいと思う

    classの定義で使うconstructor()もプロパティの1つ
    プロパティの値が関数になってるだけ

    >>761に書いてるgetやsetで定義するのはアクセサプロパティというプロパティの一つの形態
    765 : 760 - 2021/03/21(日) 23:33:04.95 ID:???.net (+19,+26,+2)
    >>764
    分かりました
    ありがとうございました
    766 : Name_Not - 2021/03/31(水) 12:52:57.76 ID:???.net (-29,-30,-169)
    usestrictモードでIE11で検証したところ、正しく変数宣言できていないとエラーが出ていましたが、
    chromeでは何もエラーが出ませんでした。
    基本chromeで検証しているので、こっちでもエラーが表示されるようにしたいのですが
    何か方法はありますでしょうか?

    エラーとしては下記のように連続して変数宣言をする際にカンマで繋げるべきところを
    セミコロンを打っていたと言った感じです。
    var sample1 = 'text';
    sample2 = 'text;
    769 : sage - 2021/04/01(木) 07:16:27.99 ID:n22atdh/.net (+17,+17,-63)
    無名関数は同一ページに何個も定義できますか?
    無名関数はそれぞれ中身は違うものとする
    770 : Name_Not - 2021/04/01(木) 07:28:27.58 ID:???.net (+34,+29,-35)
    >>769
    経験的だけど上限に達したことはないです
    Promiseのthenとか普通にみんな無名関数だし
    よほど極端な使い方をしていなければ、気にしても仕方ないのではないかと
    772 : Name_Not - 2021/04/01(木) 12:28:20.45 ID:???.net (+39,+26,-37)
    >>770
    無名関数を複数定義したら
    どうやってどの無名関数を使うか区別するんですか?
    773 : Name_Not - 2021/04/01(木) 12:42:50.15 ID:???.net (+27,+29,-5)
    区別なんてしないよ
    その場で作ってその場で使うだけ
    774 : Name_Not - 2021/04/01(木) 12:43:58.13 ID:???.net (+37,+29,-39)
    >>772
    Promiseとかイベントハンドラは名前じゃなく処理実体として関連付けてるわけだから、どれを使うも何もないよね?
    関連つける先もない無名関数ってどう使おう、というかどう書こうと考えてるの?
    775 : Name_Not - 2021/04/01(木) 13:10:31.96 ID:???.net (+17,+28,-1)
    >>771
    再現できるものくれ
    776 : Name_Not - 2021/04/02(金) 06:44:47.59 ID:???.net (+33,+29,-39)
    >>772
    自然の殆どの生き物名前が付けられていないが
    問題なくやりくりされてるでしょ?
    それと同じ
    777 : Name_Not - 2021/04/02(金) 19:04:48.47 ID:???.net (+27,+29,-23)
    無名関数なんてその場限り1度しか使わんだろう普通
    何回も呼び出すようなら普通に関数にすればいいだけだし
    778 : Name_Not - 2021/04/02(金) 20:03:26.35 ID:???.net (+27,+29,-36)
    イベントみたいに内部変数に格納したり、配列化したりはするけどね

    774でも書いたけど、無名関数を作ったって格納しなきゃ保持はできない(と思う)んだから、そもそも意味がわからない
    781 : Name_Not - 2021/04/02(金) 22:47:25.94 ID:???.net (+34,+30,-98)
    大前提としてJSに参照渡し・値渡しという区別はない
    他の多くの言語でも~渡しというのは
    アノテーションをつけるなど「渡し方」によって決まるもの
    「渡し方」が同じなのに(型によって)「渡され方」が変わると考えるのは不自然だといい加減気づいたほうがいい
    JSでは全てが名付けの連鎖、所謂共有私によって為されている
    基本的に値は複製されることはないし、消えることもない
    新しく作られた値に様々な形で様々な名前が付いていくだけ
    782 : Name_Not - 2021/04/03(土) 00:31:57.47 ID:???.net (+4,-30,-118)
    基本、動的言語では、コピーは作られない。
    Ruby で、clone, dup しても、浅いコピー(shallow copy)となり、同じ参照を指す

    再帰的な深いコピー(deep copy)は、
    JSON・marshal とか、一旦文字列にしてから、
    その文字列からオブジェクトを構築するとか、
    再帰的な参照のリンクを断たないといけない

    jQuery, Lodash などで、deep copy する関数を探した方が良いかも
    785 : Name_Not - 2021/04/03(土) 00:50:34.98 ID:???.net (+29,+29,-14)
    私も手元で試したけど、そんな事態にはならないな
    根本的に入力の時点で間違えている気がする
    786 : 779 - 2021/04/03(土) 09:23:08.68 ID:???.net (+32,+29,-190)
    沢山レスありがとうございます!
    結論から言うと、再度デバッグしたら
    正しくMapオブジェクトに変換できました…
    http://paiza.io/projects/e/7X-qC5P4_-YkGbeIfU-AcQ
    お手数おかけしました

    >>780
    MDNのObject.assignメソッドの記述(コピー)と
    やろうとしている意図(変換)が
    自分の中でごちゃごちゃになってしまいました。失礼しました

    >>781
    「渡し方」が同じなのに(型によって)「渡され方」が変わると考えるのは不自然
    これはずっと思っていました
    >JSでは全てが名付けの連鎖、所謂共有渡しによって為されている
    すごく勉強になります。覚えておきます!

    >>782
    コピーが作られないのは動的言語の仕様なんですね
    今後の心構えができました
    Array.prototype.map()も使用頻度高そうなメソッドなので勉強します
    ありがとうございます!

    >>783
    >>785
    以前事象が発生したときはループの設定をミスっていたのかもしれません…
    失礼しました
    788 : 782 - 2021/04/03(土) 22:25:45.22 ID:???.net (-26,-29,-154)
    動的言語で、複合オブジェクトをdeep copy するのは、大変。
    なかなか、再帰的な参照のリンクを断てない

    オブジェクト内のオブジェクトを再帰的にたどって行って、
    Primitive までたどり着いた所で、初めて値をコピーできる

    こういう関数を作るのが面倒だから、
    複合オブジェクトでは、一旦文字列にしてから、
    その文字列から、新たにオブジェクトを作ったりする。
    それが、JSON・marshal など

    他には、jQuery, Lodash など、何かのモジュールに、deep copy する関数があるかも
    789 : 782 - 2021/04/03(土) 22:30:37.07 ID:???.net (+23,+25,-31)
    C では変数は、値を入れる箱だけど、
    動的言語では、変数は名付け・ラベル

    箱に入れるようなイメージをしてると、参照のコピーで苦しむ
    790 : Name_Not - 2021/04/04(日) 01:58:59.39 ID:???.net (+27,+29,-4)
    話がややこしくなるからRubyガイジは出ていって。
    795 : Name_Not - 2021/04/04(日) 11:22:36.82 ID:???.net (+27,+29,-12)
    長文君よりルビキチ君のほうがいろいろとまともに見えるな
    二人ともコテハンつけてくれると助かるんだが
    796 : Name_Not - 2021/04/04(日) 16:28:38.53 ID:???.net (+23,+29,-41)
    >>793
    なにが等価になるかっていうのは値の構造や特性というより
    演算子がどう定義されてるのかっていう話になってくるからそうだね
    797 : Name_Not - 2021/04/04(日) 16:38:41.17 ID:???.net (+26,+29,-128)
    >>794
    確かに似たような概念では有るがundefinedはまだ値が割り当てられていない状態を指すのに対して
    nullはNaNに雰囲気が似ているが、明示的に(適した)オブジェクトが無いことを表す値という違いが有る

    最近のJSからはnullとundefinedをまとめた「nullish」という概念が入ってて2つを一緒に扱いやすくもなってるから
    2つあることで不便なことよりも使い分けて便利なことのほうが大きいとは思う
    798 : Name_Not - 2021/04/04(日) 16:51:34.77 ID:???.net (-27,-30,-58)
    本気で困ってるんだが質問いいか?
    $(document).bind('paste', function(e){ hoge; });
    でペースト処理を掴んでペースト内容を正規化した後に、その値を直接val()で入れると、
    Ctrl+Z とか右クリックからのアンドゥリドゥで値があべこべになるんだが解決方法知ってる人いたりするか?
    799 : Name_Not - 2021/04/04(日) 17:26:39.96 ID:???.net (+19,+21,-1)
    入れるときに整形しない
    800 : Name_Not - 2021/04/04(日) 21:26:54.38 ID:???.net (-25,-23,-73)
    SQL でも、null, undefined を区別する事を提唱した学者もいるけど、

    クエリ文を書くのがあまりにも面倒で、undefinedは採用されなかった
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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