Prototype-based languages and systems are made up of self
describing objects, unlike classical object oriented systems in
which objects are described by classes.
Protototype-based systems were originally called
prototype-based because new objects are created directly, by
copying prototypes, rather than indirectly, by using classes. More
recently, the philosphical focus of prototype-based programming (on
concrete objects, rather than on abstractions like classes) has
been recognised as at least as important as how objects are
created, so this kind of programming has also been called
object-based or object-centered.