Function object
In Ruby, several objects can be considered function objects, in particular Method and Proc objects. Ruby also has two kinds of objects that can be thought of as semi-function objects: UnboundMethod and block. UnboundMethods must first be bound to an object (thus becoming a Method) before they can be used as a function object. Blocks can be called like function objects, but to be used in any other capacity as an object (e.g. passed as an argument) they must first be converted to a Proc. More recently, symbols (accessed via the literal unary indicator codice_35) can also be converted to codice_36s. Using Ruby's unary codice_37 operator—equivalent to calling codice_38 on an object, and assuming that method exists—the Ruby Extensions Project created a simple hack.
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.