Java program: Class IAmExist { Public String state = "I am thinking"; } ... String a = new IAmExist(); String b = new IAmExist(); String c = new IAmExist(); JavaScript program: function IAmExist () { var state = "I am thinking"; return state; } ... var a = IAmExist(); var b = IAmExist(); var c = IAmExist(); There is a similiarity between a, b, c, ... They all refer to pieces in the computer memory which have the similar content. We call this similarity "a set" or "a class" and a, b, c become objects of this class. If purpose of our application just to output these variables, System.out.println a.state; alert( a ); this "Object Oriented Programming" is complete. This makes no diffrence that Java has a formal "Class" construct and JavaScript none. In this model of JavaScript, the "function" represents a "Class". It is enough we think about our language constructs as of classes and objects and our program behaves as we think. OOP is a behaviour. "Call it duck if it behaves like a duck." [credit required]