История изменений
Исправление 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]
и тд. И на каждом этапе можно всё менять в рантайме. В С++ и большинстве других ООП-языков такой возможности нет и виртуальные таблицы задаются на этапе компиляции. Это и плюс (идёт ровно одно разыменование указателя, чтобы добраться до указателя на функцию), и минус (меньше гибкости, хотя с другой стороны может это и не минус).