はじめに この記事では TC39 のプロトタイプ汚染周りの提案、そしてグローバルやプロトタイプのプロパティ変更に耐えるためのコードである primordials.js について紹介します。 プロトタイプ汚染とは JavaScript はプロトタイプベースの言語です。どのオブジェクトもプロトタイプ([[Prototype]] 内部スロット)を持っており、それを辿ることで継承を表現します(プロトタイプチェーン)。 JavaScript では基本的にどのオブジェクトも凍結されておらず、好きにプロパティを追加していくことができます。かつて Prototype JavaScript Framework や MooTools というライブラリが広く使われ、ビルトインオブジェクトのプロトタイプに独自のメソッドを追加して Web サイトを開発していました。しかしオブジェクトが直接所有するプロパティとプロト