1936年の登場後、爆発的に普及したPCCカーが、多くの部材にプレス鋼板を用い、車体の軽量化に先鞭を付けたが、構造的には依然台枠構造であった。日本で初めてモノコック構造を指向した設計となった鉄道車両は1952年に登場した西日本鉄道の313形電車である。この西鉄313形電車の影響を受け、国鉄の一連のレールバスと初代東急5000系電車が、いずれも1954年より東急車輛で製造が開始された。さらに革新的であったのが、1955年に日立で製造された相模鉄道5000系であり、こちらは台車間の断面を下方へ拡大し、床下機器までもボディーマウントとしていた。同様の構造は名古屋市営地下鉄東山線100形にも採用された。1957年に登場した小田急3000形電車 (初代)にも採用され、狭軌鉄道における世界最高速度記録を樹立した。当時はまだステンレス鋼やアルミを加工して車体に利用する技術が完全に確立されていなかったため、普通鋼を用いながら軽量化が可能なこの方法が一部の鉄道で使用された。外板を薄くしながらも強度を保つため、PCCカーや初代東急5000系電車をはじめ、強度保持のために側面に波形材（リブ鋼板）を用いているものが多い。バスボディーと同様の工法で製作されたレールバスや路面電車を除き、日本の鉄道車両の場合、外板も溶接工法であったため、車体表面にリベットは無い。最大のメリットとしては軽量化が出来ることであるがその反面、デメリットとしては、薄肉鋼板は経年による車体構造の剛性維持が難しく、また、腐食により強度が著しく低下し老朽化の進行が早い。また、重量や開口の増加などに対応できないことなどから、将来の冷房装置搭載などの拡張が困難になる。その後の東急車輛は、米国バッド社による技術提供で、オールステンレス製の東急7000系電車で製造技術を確立し、以降はステンレス車体が主流となり、モノコック工法は新幹線車両を除き、一時途絶えることになる。このほか、昭和30年代には路面電車の車両にもこの工法が多く用いられた。
以下のサンプルコードは、様々なJavaScriptの機能を示したものである。"use strict"; // strictモードの宣言/* 2つの数値の最小公倍数を求める */function LCMCalculator(x, y) { // コンストラクタ関数    const checkInt = (x)=> { // 入れ子の関数        if (x % 1 !== 0) {            throw new TypeError(x + " is not an integer"); // 例外のスロー        }        return x;    };    //   行末のセミコロンは省略可能な場合があるが、省略は推奨されない。    this.a = checkInt(x)    this.b = checkInt(y);}// オブジェクトのプロトタイプはコンストラクタ関数の prototype プロパティに格納するLCMCalculator.prototype = { // オブジェクトリテラル    constructor: LCMCalculator, // このようにプロトタイプを上書きする場合は、                                // constructorプロパティにコンストラクタ関数名を再指定する    gcd: function () { // 最大公約数を計算するメソッド        // 「ユークリッドの互除法」アルゴリズムで計算        let a = Math.abs(this.a), b = Math.abs(this.b);        if (a < b) {            // 変数の入れ替え            const t = b;            b = a;            a = t;        }        while (b !== 0) {            const t = b;            b = a % b;            a = t;        }        // 最大公約数の計算は一度でよいため、自分自身を計算済みの結果を返すメソッドで再定義（上書き）する。        // （これにより LCMCalculator.prototype.gcd の代わりに this.gcd が呼ばれるようになる。        //   ただし、計算後にプロパティ a や b が変更されてしまうと、結果は誤りとなる。）        // なお 'gcd' === "gcd", this['gcd'] === this.gcd である。        this['gcd'] = function () {            return a;        };        return a;    },    lcm : function () { // 最小公倍数を計算するメソッド        // 変数名は、オブジェクトのプロパティと衝突しない。例）lcm は this.lcm とは異なる。        // 以下では、浮動小数の精度の問題を避けるために this.a * this.b としていない。        const lcm = this.a/this.gcd()*this.b;        // 最小公倍数の計算も一度でよいため、自分自身を計算済みの結果を返すメソッドで再定義（上書き）する。        this.lcm = function () {            return lcm;        };        return lcm;    },    toString: function () { // toStringはオブジェクトを文字列に変換するときに呼ばれるメソッド。        // テンプレート文字列により文字列中に値を埋め込むことができる。        return `LCMCalculator: a = ${this.a}, b = ${this.b}`;    }};// 汎用の出力関数の定義。この実装はWebブラウザ上でのみ動作する。function output(x) {    document.body.appendChild(document.createTextNode(x));    document.body.appendChild(document.createElement('br'));}// 無名関数はさまざまな書き方が可能[[25, 55], [21, 56], [22, 58], [28, 56]].map(([a, b])=> new LCMCalculator(a, b)) // 配列リテラル + マッピング関数.sort((a, b)=> a.lcm() - b.lcm()) // 指定した比較関数を用いたソート.forEach(obj=> {    output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());});上記コードをウェブブラウザ上で実行すると、以下の結果が表示される。LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638