Я недавно играл с javascript и пытаюсь осознать преимущества псевдоклассического наследования (как описано Крокфордом с использованием свойства prototype объектов). Крокфорд говорит, что он редко использует его и предпочитает функциональный подход, то есть создание функции, которая дополняет объект, такой как
var obj = function() {
var self = {};
self.method = function() {
};
return self;
}
Я предпочитаю такой подход, он легче для понимания и кажется гибким.
Однако я вижу много кода, который все еще использует свойство prototype, включая популярные фреймворки, такие как jQuery. Мне интересно, каковы преимущества? Мое понимание использования свойства prototype заключается в том, что оно дает нам возможность спросить, является ли объект конкретным типом, пройдя через цепочку прототипов. Однако, будучи динамическим языком, не лучше ли спросить, может ли объект что-то сделать, а не то, чем он является?