Cay S. Horstmann : JavaScript モダンプログラミング完全ガイド

作成日 : 2023-04-12
最終更新日 :

概要

「なぜこの本を書いたのか」から引用する。

Java や、それに似た言語を知っていて、 JavaScript をいまの姿で(歴史的な残滓を除いた形で)学びたいと思っているプログラマは何百万人もいるだろうに、そういう人たちのための本を見つけることができないのは、おかしなことではないか。

だから、私がこの本を書くことになった。

感想

まえがきにある、5 つの大原則は大事だと思う。以下引用する。

  1. 変数は、var でなく、let または const で宣言せよ。
  2. strict モードを使え。
  3. 型を理解し、自動的な型変換を避けよ。
  4. プロトタイプを理解しよう。しかし、クラスとコンストラクタとメソッドには現在の構文を使おう。
  5. this は、コンストラクタまたはメソッドの中でだけ使おう。

難しい

私は頭が悪いので、本書を読み進めるのが難しかった。

演習問題

各章の末尾には演習問題がある。第4章「オブジェクト指向プログラミング」の演習問題の 8 番 (p.109) をやってみた。

8 抽象クラスの古典的な例が、ツリー(木構造)のノードである。 ノードには、子供のある親ノードと子供のない葉ノードの2種類がある(コードブロックの引用は割愛)。 Java や C++ では、このようにツリーノードをモデリングするだろう。けれどお JavaScript では、 n.depth() を呼び出せるようにするのに、抽象クラスは必要ない。継承なしでクラスを書き直し、 テストプログラムも作ろう。

書き直してみてテストプログラムも作ったが、果たしてこれでいいのだろうか。

コード

/* Cay S. Horstmann : JavaScript モダンプログラミング完全ガイド */
/* p.109 ekz08.js */
"use strict";
class Node {
  constructor(value, children) {
    this.value = value;
    this.children = children;
  }
  depth() {
    return this.children === undefined
      ? 1
      : 1 + Math.max(...this.children.map((n) => n.depth()));
  }
}

const tarao = new Node("Tarao");
const sazae = new Node("Sazae", [tarao]);
const katuo = new Node("Katuo");
const wakame = new Node("Wakame");
const fune = new Node("Fune", [sazae, katuo, wakame]);

console.log(`tarao : ${tarao.depth()}`);
console.log(`sazae : ${sazae.depth()}`);
console.log(`katuo : ${katuo.depth()}`);
console.log(`wakame : ${wakame.depth()}`);
console.log(`fune : ${fune.depth()}`);

実行結果

PS C:> node .\ekz08.js
tarao : 1
sazae : 2
katuo : 1
wakame : 1
fune : 3

書誌情報

書名 JavaScript モダンプログラミング完全ガイド
著者 Cay S. Horstmann
発行日 2020 年 12 月 21 日 初版第1刷
発行元 インプレス
定価 3000 円(本体)
サイズ A5 判変形 ページ
ISBN 978-4-295-01056-2
その他 越谷市立図書館で借りて読む

まりんきょ学問所コンピュータについてコンピュータの本JavaScript, altJS > Cay S. Horstmann:JavaScript モダンプログラミング完全ガイド


MARUYAMA Satosi