LINUX.ORG.RU

История изменений

Исправление vbr, (текущая версия) :

Принципиальное отличие prototype от С++ в том, что там есть возможность конкретному объекту поменять метод, например. То бишь там идёт поиск по цепочке obj[method], obj.__proto__[method], obj.__proto__.__proto__[method] и тд. И на каждом этапе можно всё менять в рантайме. В С++ и большинстве других ООП-языков такой возможности нет и виртуальные таблицы задаются на этапе компиляции. Это и плюс (идёт ровно одно разыменование указателя, чтобы добраться до указателя на функцию), и минус (меньше гибкости, хотя с другой стороны может это и не минус).

Хотя если в эти нюансы не вдаваться, а просто писать class A extends B, то работает примерно так же.

Исходная версия vbr, :

Принципиальное отличие prototype от С++ в том, что там есть возможность конкретному объекту поменять метод, например. То бишь там идёт поиск по цепочке obj[method], obj.__proto__[method], obj.__proto__.__proto__[method] и тд. И на каждом этапе можно всё менять в рантайме. В С++ и большинстве других ООП-языков такой возможности нет и виртуальные таблицы задаются на этапе компиляции. Это и плюс (идёт ровно одно разыменование указателя, чтобы добраться до указателя на функцию), и минус (меньше гибкости, хотя с другой стороны может это и не минус).