## 【第16回】JSPrimer輪読会 ###### tags: `JSPrimer輪読会` - [開催概要](https://hackmd.io/OsL28Q9fS7Wa2alu3gkoaw) - [JSPrimer輪読会 ノートまとめ](https://hackmd.io/@NRLooQz8RrqbPmaSYWZceg/r1S4p-5Ds) ------ ## 2023\-2\-16(木) ### 連絡事項や確認・相談 - ### タイムキーパー - maimu ### 読んだところ - プロトタイプオブジェクト - 配列の作成とアクセス ### 次回 - [ES2022] Array.prototype.at ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - maimu - JSには`Map` 型というデータ型がある。 - Rubyの`map` メソッドと混乱するけど違うもの - ES2022から導入された`Object.hasOwn` 静的メソッドは、対象のオブジェクトが `Object.prototype` を継承していないかは関係なく利用できる - 「疎」と「密」の概念は覚えておきたい - - mohira - `typeof`には期待しない - データ型を返す命令ではなくて、「"プリミティブ型"と"オブジェクト"を区別する命令 - 配列がobjectなのはめっちゃ違和感あり。でも、しかたないやつっぽい。しかたない。 - https://jsprimer.net/basic/data-type/#data-type - `> typeof [1,2,3] // 'object'` - https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/typeof - Q. じゃあ、具体的なデータ型をするにはどうすればいいねん? - 未解決 - プロトタイプチェーンやメソッド呼び出しの優先順位はプロパティを消したり`===`で調べればかなり分かる - https://discord.com/channels/715806612824260640/1050016558124126268/1075725704248959007 - https://discord.com/channels/715806612824260640/1050016558124126268/1075723964233551902 - https://discord.com/channels/715806612824260640/1050016558124126268/1075723556870176778 - https://discord.com/channels/715806612824260640/1050016558124126268/1075721868524404797 - Sparseは 疎ら(まばら) や 疎(そ) - https://discord.com/channels/715806612824260640/1050016558124126268/1075729340676968468 - プロトタイプチェーンのモチベーションって何? わざわざObjectを継承する意味とは? - 未解決 - @fuwa - プロトタイプメソッドよりもインスタンスメソッドが優先される - `Object.create(null)`でプロトタイプメソッドを継承しないオブジェクトを作れるが、最近はMapが導入されたので使わなそう? - 配列で、存在しないインデックスにアクセスした際は例外ではなくundefinedを返す。エラーに気づかなさそうで怖い - @dawa - インスタンスからprototypeオブジェクト上に定義されたメソッドを参照できる仕組みをプロトタイプチェーンと呼ぶ。インスタンスからプロトタイプメソッドを呼び出せる。密の反対は疎。 ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @dawa - 目が疲れて少し頭が痛いので労ります。 - @fuwa - 自作サービスでJSONとずっと向き合っていて疲れてきました。やりたいことがあんまり実現できないような気がしてきてげっそりしてます - 現実逃避に久しぶりにヒトカラに行っていました〜声ガサガサですみません - 18番は何ですか? - 18番がほしい人生でした - maimu - やっとスマホを買い替えました!久しぶりにスマホからDiscordが見れた・・・! - 最近コードを書いていてなぜそう書くのかとかの言語化力が全然ないなの痛感 - JSばかり勉強していてRailsを忘れている。学習のバランス難しい・・・ - mohira - インターネットの調子が悪い日が続いて、もう!!! - Linuxの勉強楽しい(Linuxの教科書) ## 2023\-2\-17(金) ### 連絡事項や確認・相談 - ### タイムキーパー - maimu ### 読んだところ - 配列 [ES2022] Array.prototype.at ~ Array.prototype.splice ### 次回 - lengthプロパティへの代入 ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - mohira - splice は 紐やら遺伝子配列やらを ギュッ!ってする感じのやつ。英単語のニュアンスを掴みたくなる。 - `Array.prototype.includes`, `Array.prototype.some` のちがい。 - `in`演算子はオブジェクト用なので注意したい。(Pythonでの `in` は JSでいう、`hasOwn`や`inclueds`っぽい挙動でより汎用的) - 昨日やったプロトタイプの話のおかげでdocを歩くのがうまくなった! - 「リテラルは新しいオブジェクトを作るため、異なるオブジェクトだと判定される」ので`{} === {} // false` - @fuwa - `Array.prototype.at` は相対的なインデックスの値を指定して配列の要素へアクセスできる。引数に数字以外を入れると変なことになるので注意 - `slice`と`splice`を間違えないようにしなきゃ - わかる...!!! 音もスペルも似ている - maimu - `indexOf` は厳密等価演算子で右辺と左辺が `true` の場合にインデックスを取得できる - `findIndex` は厳密等価演算子で右辺と左辺が `false` の場合でも値が一致していればインデックスが取れる - @AntiSatori - 調べたところJSではconcatで結合できるかどうかは[Symbol.isConcatSpreadable](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable)を使って、Spread構文で展開できるかどうかは[Symbol.iterator](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol/iterator)を使って判断してるっぽいです。 - JavaScriptがオブジェクトをどのように扱うかを[Well-known symbol](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Symbol#well-known_symbol)を使って管理しているらしいです。 - はるまき - array.atで1.5を渡すと2として扱われたりするので基本的に正の整数を渡す。エラーにならないので注意! - dawa - indexOfメソッドは厳密等価演算子で一致するかどうかによって真偽を判定する。findIndexメソッドの引数には配列の各要素をテストする関数をコールバック関数として渡すことができる(処理を自分で書ける) ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - はるまき - ひさびさに参加できて嬉しい〜! まいむさんが開催のお知らせのところにどこから読み始めるのか書いてくれているのでひさびさでも参加しやすかったです! - おかえりなさいです〜✨ - LEF - 今日の夕食は焼きそばでした! - 最近はORM(オブジェクト関係マッピング)が気になっています。(ActiveRecordみたいなやつのことです) - maimu - railsのコールバックを理解した(気がする) - お! - パrailsを読み直したら前よりわかるようになっていて嬉しかった! - @fuwa - 自作サービスでほしいデータが取得できるか調査を続けていますが、想定外の事態が発生しないか不安なので早めに動くものを作った方が良いかなぁと考えています - 来週からバイトです!自宅警備員からお外の警備員になります! - 💪 - :cop: - 制服かっこよさそうですね。 - 帽子とかもあってかっこよさげでした〜14年ぶりの制服です! - dawa - テストの最初のプラクティスの参考記事を読み終わりました。Railsコメントのプラクティスもレビュー待ちですが、ポリモーフィズムのうまみを得るために少し修正するとエラーが出てきてうまくいかなそうです。