## 【第14回】JSPrimer輪読会 ###### tags: `JSPrimer輪読会` - [開催概要](https://hackmd.io/OsL28Q9fS7Wa2alu3gkoaw) - [JSPrimer輪読会 ノートまとめ](https://hackmd.io/@NRLooQz8RrqbPmaSYWZceg/r1S4p-5Ds) ------ ## 2023\-2\-9(木) ### 連絡事項や確認・相談 - ### タイムキーパー - maimu ### 読んだところ - プロパティの存在を確認する ~ [コラム] オブジェクトのプロパティ名は文字列化される ### 次回 - ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - maimu - プロパティの存在確認には `Object.hasOwn` 静的メソッドと `Object.prototype.hasOwnProperty` メソッドがある - `Object.hasOwn` 静的メソッドが使えるならば、こっちを使う - プロパティの存在確認ではなくプロパティの値を取りたいならOptional chaining演算子(?.)も使える - LEF - RubyとJavaScriptのオブジェクトは似てるけど違うもの - JavaScriptではなくTypeScriptの話になっちゃうのですが、型注釈の`:`なのか三項演算子の`:`なのかで迷ってしまうことがあってなかなか慣れないです……(`?`も同様に迷いがちです) - 型注釈の`T extends 条件 ? true : false`も三項演算子じゃないですか? - なるほど!ありがとうございます![【TypeScript】Conditional Typeで型の条件分岐を行う](https://zenn.dev/oreo2990/articles/1040312d7af066) - @AntiSatori - `Object.hasOwn`の存在を初めて知ったのでこれから使っていきたいです。`Object.hasOwnProperty`との違いが気になりますね。 - @haruguchi - ?を学んだ!? - ↑↑末尾のはてなが演算子に見えますねw - wwww - @fuwa - `?.`演算子、自作サービスで使うかもしれないのでもう少し調べようと思います〜 - プロパティの存在確認には`in`演算子と`Object.hasOwn静的メソッド`がオススメ - ブラケット記法で、オブジェクトをプロパティ名に指定すると`「object Object」` になってしまうので注意 - []記法の中は式で評価されると覚えとくと便利! - @mohira - いきなり参加! 開催、ありがとうございます! :+1: :+1: - NULLやundefinedが当たり前(?)な世界っぽいので、`?.`や`??`といった演算子があるのは納得できる。けど、そもそもこやつらをどうにかできればよいのでは...(暴論 - object を キー とする object つくれない。たぶんハッシュ化できないから、勝手に文字列化するんだと思う。しらんけど! - https://discord.com/channels/715806612824260640/1050016558124126268/1073193971645435964 - Nullish に undefined が含まれているのはちょっと納得いかないw undefined と null むずすぎる...。とはいえ、この2つを意味する用語を知ったのはラッキー! (ググれるからね) - `toString`メソッドと`String`が分かって嬉しい。 - `??`はOR回路の特殊系とみなすと理解が楽だった。Docにもそう書いてあった。https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Nullish_coalescing - @dawa - ?? は Null 合体演算子と言う。オブジェクトのプロパティ名は文字列として扱われることを覚えておくとよい。暗黙的に変換されている。 ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - @haruguchi - 今日ずっと金曜日と思って仕事してました!!!そんな感じしませんか?僕だけですか?そうですか? - わかります・・・! - ECMAScriptお目当ての情報に辿り着くのがしんどい。たらい回しにされている - @dawa - 土曜日が祝日なのが嬉しいです!! - maimu - 最近全然コードが書けてないので開発したい!! - @fuwa - 今日は就職相談をしました〜いろいろ知ることができてよかったです! - @AntiSatori - 今週はTypeScriptの勉強を沢山して型レベルプログラミングが少しずつ出来るようになってきました。 - 頑張って型レベルJSONパーサー書こうとしてます。 - すげぇ!!ガンバッテクダサイ!教えてください! - LEF - 今日の夕食はシチューでした(たぶんクレアおばさん)。 - @morira - 明日は東京、雪らしい。なかなか大変かも ## 2023\-2\-10(金) ### 連絡事項や確認・相談 - ### タイムキーパー - maimu ### 読んだところ - オブジェクトの静的メソッドから ### 次回 - プロトタイプオブジェクト ### 自由に使う共有スペース ### 各自の疑問点や気づき、学んだこと - LEF - HTML Living StandardやDom Standardなどについては知らなかったので勉強になりました。 - MDN Web Docを読んでおけばいつもなんとかなっているのでMDN(Mozilla)に感謝🙏 - :pray::pray: - mohira - shallow/deep copy - 定義(用語) - https://developer.mozilla.org/ja/docs/Glossary/Shallow_copy - https://developer.mozilla.org/ja/docs/Glossary/Deep_copy - [短日報:配列をディープコピーすれば元の配列が書き換わることはないよの巻 | FBC](https://bootcamp.fjord.jp/reports/63915) - objectのマージのイディオムGET!!! - 言語仕様や処理系の実装のばらつきがあるので、なかなか大変そう。ググりにくさもある。 - 未解決 - Q. obj.keys() ではなく Object.keys(obj) なのはなぜ? - Q. JSでなにかの値のメモリアドレスを調べる方法は? - https://medium.com/@shibukk/object-id-ruby-and-js-7bb1b6114042 - とはいえ、処理系の実装次第説がある。 - Q. `===`の厳密な比較とは - 仕様を読むなら → https://tc39.es/ecma262/#sec-samevalue - fuwa - `Object.assign` メソッドでオブジェクトを複製することができる。シャローコピーであることに注意。 - シャローコピーという単語は初めて聞きました〜 - @haruguchi - コピー云々はnpm作ったときに初めて知った - ネットでオブジェクトのIDないのか検索したら渋谷さんの記事だった - 同値の定義はESCMAScriptで定義されている - JSは処理系とかによって色々あって、歴史的経緯によりカオスなので理解しづらい部分はある - maimu - シャローコピーやディープコピーについて何も知らなかった - オブジェクトを複製する場合、JSはシャローコピーであることを覚えておく - JSのオブジェクトにはIDがないというのも興味深い - @dawa - deep shallow コピーがある。deepコピーする場合は新しくオブジェクトを作り直したほうが良い。参照が同じものになるので。たくさん同じオブジェクトを参照するのは良くない。 - @AntiSatori - シャローコピーとディープコピーの違いとそれがなぜ発生するかはオブジェクトが参照を利用していることを理解しないといけないのと、いつ新しくオブジェクトが生成されているのか理解しないといけないので難しいなーと思いました。 - 自分は[Just Javascript](https://justjavascript.com)読んで学びました。 - :eyes: ### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK) - LEF - 今日の夕食は鍋でした。竹輪麩(ちくわぶ)が美味しかったです - 「調べ方の技術」について気になっています。Googleでも検索ワード次第で、欲しい情報が見つかったり見つからなかったりするので。🔍 - @haruguchi - 今日が本当の金曜日 - お腹痛い - デブサミ!←何か書こうと思ったけど忘れた←思い出した - maimu - スマホを早く買い替えたい - 手動テスト滅すべしお化け復活です - 手動テスト!(も大事???) - @fuwa - 受託にするか自社サービスの会社にするか悩ましいです〜〜 - ようこそ受託へ!!!!!!!!!!!!!!! - 受託 vs 自社サービス と考えると結構罠があるので気をつけてください.自社プロダクトにコミットしたいと思っても大企業とかなら分業されていて、意外とできなかったりするし、受託でも小さい規模だとできたりして、色々罠があります。 - あー確かに東郷さんにそんな感じのことを言われました。。ちゃんと考えないと大変なことになりそうですね。。  - :muscle: - 最近わかめそばにハマってます - @dawa - 雪は降りましたか?お腹がすきました〜。 - @AntiSatori - 今日は頭痛がひどくて何も出来なかった。。。 - 昨日は頑張ってTypeScriptで型レベルFizzBuzz作りました - https://www.typescriptlang.org/play?#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 - 見ましたが凄かったです! TSは型注釈や型パラメーターを書こうとすると(仕様上)かなり可能な感じですか? - 型注釈というより実態のない型だけ大量に書いてたので虚無を作ってる気分になりました - mohira - 意外と仕様読めそう..!! → https://tc39.es/ecma262/#sec-samevalue - ~~処理系の実装との対応関係が謎!~~ 書いてあった!