JS において、クラスは関数によって定義します。つまり、クラスと言っていますがそれは便宜的な表現であって、実際には関数オブジェクトという名のオブジェクトです。これが、オブジェクトのコンストラクタとなります: function MyClass() { this.property = '...'; this.method = function (){ ... }; } var myObj = new MyClass;例において、myObj は MyClass のインスタンスとなり、クラスとインスタンスという関係が成り立つわけです。 この時に問題となることがあります。それは、インスタンスが生成される度に、クラス定義の中身が新たにメモリー上にロードされてしまう、ということです。複数のインスタンスを同時に持ちたい時に無駄にメモリーを消費してしまうことになります。 そこで登場するのが prototyp