Test case details

Preparation Code

Klass1 = function() {}     Klass1.prototype.foo = function() {       log('foo');     }     Klass1.prototype.bar = function() {       log('bar');     }         Klass2 = function() {       var foo = function() {             log('foo');           },           bar = function() {             log('bar');           };           return {foo: foo, bar: bar}     }             var FooFunction = function() {       log('foo');     };     var BarFunction = function() {       log('bar');     };         Klass3 = function() {       return {foo: FooFunction, bar: BarFunction}     }         Klass4 = function() {       this.foo = FooFunction;       this.bar = BarFunction;     }

Test cases

Test #1

var i = 1000,     objs = []; while (i--) {   var o = new Klass1()   objs.push(new Klass1());   o.bar;   o.foo; }

Test #2

var i = 1000,     objs = []; while (i--) {   var o = Klass2()   objs.push(Klass2());   o.bar;   o.foo; }

Test #3

var i = 1000,     objs = []; while (i--) {   var o = Klass3()   objs.push(Klass3());   o.bar;   o.foo; }

Test #4

var i = 1000,     objs = []; while (i--) {   var o = new Klass4()   objs.push(new Klass4());   o.bar;   o.foo; }