Ruby (programming language)
Matsumoto defined it this way in an interview:Ruby is object-oriented: every value is an object, including classes and instances of types that many other languages designate as primitives (such as integers, booleans, and "null"). Variables always hold references to objects. Every function is a method and methods are always called on an object. Methods defined at the top level scope become methods of the Object class. Since this class is an ancestor of every other class, such methods can be called on any object. They are also visible in all scopes, effectively serving as "global" procedures. Ruby supports inheritance with dynamic dispatch, mixins and singleton methods (belonging to, and defined for, a single instance rather than being defined on the class). Though Ruby does not support multiple inheritance, classes can import modules as mixins.
Object-oriented programming
In prototype-based languages the "objects" are the primary entities. No "classes" even exist. The "prototype" of an object is just another object to which the object is linked. Every object has one "prototype" link (and only one). New objects can be created based on already existing objects chosen as their prototype. You may call two different objects "apple" and "orange" a fruit, if the object "fruit" exists, and both "apple" and "orange" have "fruit" as their prototype. The idea of the "fruit" class doesn't exist explicitly, but as the equivalence class of the objects sharing the same prototype. The attributes and methods of the "prototype" are delegated to all the objects of the equivalence class defined by this prototype. The attributes and methods "owned" individually by the object may not be shared by other objects of the same equivalence class; e.g. the attributes "sugar content" may be unexpectedly not present in "apple". Only single inheritance can be implemented through the prototype.