Preparation Code Preparation HTML (this will be inserted in the <body>
of a valid HTML5 document in standards mode) (useful when testing DOM operations or including libraries) <script src ="http://ringjs.neoname.eu/static/js/underscore.js" type ="text/javascript" > </script >
<script src ="http://ringjs.neoname.eu/static/js/ring.js" type ="text/javascript" > </script >
<script src ="http://dl.dropbox.com/u/7677927/oop-benchmark/lib/jsface.js" >
</script >
<script src ="http://dl.dropbox.com/u/7677927/oop-benchmark/lib/my.class.js" >
</script >
<script src ="http://dl.dropbox.com/u/7677927/oop-benchmark/lib/jrclass.js" >
</script >
<script src ="http://dl.dropbox.com/u/7677927/oop-benchmark/lib/klass.js" >
</script >
<script src ="http://dl.dropbox.com/u/7677927/oop-benchmark/lib/classy.js" >
</script >
<script src ="http://dl.dropbox.com/u/7677927/oop-benchmark/lib/ptclass.js" >
</script >
<script src ="https://raw.github.com/javascript/augment/master/lib/augment.js" >
</script >
<script src ="http://cdn.sencha.com/ext-4.1.1a-gpl/builds/ext-foundation.js" >
</script >
<script src ="https://raw.github.com/torworx/ovy/master/ovy.js" >
</script >
<script src ="http://indigounited.com/dejavu/dejavu.js" >
</script >
<script src ="https://raw.github.com/jayferd/pjs/master/src/p.js" > </script >
<script src ="https://gist.github.com/yckart/5267295/raw/Class.js" > </script >
<script src ="http://symtales.net/alch/src/A.min.js" > </script >
<script src ="https://raw.github.com/weikinhuang/Classify/master/dist/classify.js" > </script >
<script src ="https://raw.github.com/google/traceur-compiler/master/bin/traceur.js" > </script >
<script >
var RingPerson = ring.create ({
$init : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var RingFrenchGuy = ring.create ([RingPerson ], {
$init : function (name ) {
RingFrenchGuy .__super__ .$init .call (this , name);
},
setAddress : function (city, street ) {
RingFrenchGuy .__super__ .setAddress .call (this , 'France' , city, street);
}
});
var RingParisLover = ring.create ([RingFrenchGuy ], {
$init : function (name ) {
RingParisLover .__super__ .$init .call (this , name);
},
setAddress : function (street ) {
RingParisLover .__super__ .setAddress .call (this , 'Paris' , street);
}
});
var __hasProp = {}.hasOwnProperty ,
__extends = function (child, parent ) {
for (var key in parent) {
if (__hasProp.call (parent, key)) child[key] = parent[key];
}
function ctor ( ) {
this .constructor = child;
}
ctor.prototype = parent.prototype ;
child.prototype = new ctor ();
child.__super__ = parent.prototype ;
return child;
};
var JSFacePerson = jsface.Class ({
constructor : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var JSFaceFrenchGuy = jsface.Class (JSFacePerson, {
constructor : function (name ) {
JSFaceFrenchGuy.$super .call (this , name);
},
setAddress : function (city, street ) {
JSFaceFrenchGuy.$superp .setAddress .call (this , 'France' , city, street);
}
});
var JSFaceParisLover = jsface.Class (JSFaceFrenchGuy, {
constructor : function (name ) {
JSFaceParisLover.$super .call (this , name);
},
setAddress : function (street ) {
JSFaceParisLover.$superp .setAddress .call (this , 'Paris' , street);
}
});
var MyPerson = my.Class ({
constructor : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var MyFrenchGuy = my.Class (MyPerson , {
constructor : function (name ) {
MyFrenchGuy .Super .call (this , name);
},
setAddress : function (city, street ) {
MyFrenchGuy .Super .prototype .setAddress .call (this , 'France' , city, street);
}
});
var MyParisLover = my.Class (MyFrenchGuy , {
constructor : function (name ) {
MyParisLover .Super .call (this , name);
},
setAddress : function (street ) {
MyParisLover .Super .prototype .setAddress .call (this , 'Paris' , street);
}
});
var JRPerson = JRClass.extend ({
init : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
},
sayHello : function ( ) {
console .log ('I am ' + this .name + '. My address is ' + this .country + ', ' + this .city + ', ' + this .street + '.' );
}
});
var JRFrenchGuy = JRPerson.extend ({
init : function (name ) {
this ._super (name);
},
setAddress : function (city, street ) {
this ._super ('France' , city, street);
}
});
var JRParisLover = JRFrenchGuy.extend ({
init : function (name ) {
this ._super (name);
},
setAddress : function (street ) {
this ._super ('Paris' , street);
}
});
var EnderPerson = klass (function (name ) {
this .name = name;
}).methods ({
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var EnderFrenchGuy = EnderPerson .extend (function (name ) {}).methods ({
setAddress : function (city, street ) {
this .supr ('France' , city, street);
}
});
var EnderParisLover = EnderFrenchGuy .extend (function (name ) {}).methods ({
setAddress : function (street ) {
this .supr ('Paris' , street);
}
});
var ClassyPerson = Classy .$extend({
__init__ : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var ClassyFrenchGuy = ClassyPerson .$extend({
__init__ : function (name ) {
this .$super(name);
},
setAddress : function (city, street ) {
this .$super('France' , city, street);
}
});
var ClassyParisLover = ClassyFrenchGuy .$extend({
__init__ : function (name ) {
this .$super(name);
},
setAddress : function (street ) {
this .$super('Paris' , street);
}
});
var PTClassPerson = PTClass.create ({
initialize : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var PTClassFrenchGuy = PTClass.create (PTClassPerson, {
initialize : function ($super, name ) {
$super(name);
},
setAddress : function ($super, city, street ) {
$super('France' , city, street);
}
});
var PTClassParisLover = PTClass.create (PTClassFrenchGuy, {
initialize : function ($super, name ) {
$super(name);
},
setAddress : function ($super, street ) {
$super('Paris' , street);
}
});
var CoffeePerson = (function ( ) {
function CoffeePerson (name ) {
this .name = name;
}
CoffeePerson .prototype .setAddress = function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
};
return CoffeePerson ;
})();
var CoffeeFrenchGuy = (function (_super ) {
__extends (CoffeeFrenchGuy , _super);
function CoffeeFrenchGuy (name ) {
CoffeeFrenchGuy .__super__ .constructor .call (this , name);
}
CoffeeFrenchGuy .prototype .setAddress = function (city, street ) {
return CoffeeFrenchGuy .__super__ .setAddress .call (this , "France" , city, street);
};
return CoffeeFrenchGuy ;
})(CoffeePerson );
var CoffeeParisLover = (function (_super ) {
__extends (CoffeeParisLover , _super);
function CoffeeParisLover (name ) {
CoffeeParisLover .__super__ .constructor .call (this , name);
}
CoffeeParisLover .prototype .setAddress = function (street ) {
return CoffeeParisLover .__super__ .setAddress .call (this , "Paris" , street);
};
return CoffeeParisLover ;
})(CoffeeFrenchGuy );
Ext .define ('ExtPerson' , {
constructor : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
Ext .define ('ExtChinaGuy' , {
extend : 'ExtPerson' ,
constructor : function ( ) {
this .callParent (arguments );
},
setAddress : function (city, street ) {
this .callParent (['China' , city, street]);
}
});
Ext .define ('ExtBeiJingLover' , {
extend : 'ExtChinaGuy' ,
constructor : function (name ) {
this .callParent (arguments );
},
setAddress : function (street ) {
this .callParent (['BeiJing' , street]);
}
});
var dejavuClassPerson = dejavu.Class .declare ({
initialize : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var dejavuClassFrenchGuy = dejavu.Class .declare ({
$extends : dejavuClassPerson,
setAddress : function (city, street ) {
this .$super('France' , city, street);
}
});
var dejavuClassParisLover = dejavu.Class .declare ({
$extends : dejavuClassFrenchGuy,
setAddress : function (street ) {
this .$super('Paris' , street);
}
});
var dejavuClassPerson2 = dejavu.Class .declare ({
initialize : function (name ){
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
}, true );
var dejavuClassFrenchGuy2 = dejavu.Class .declare ({
$extends : dejavuClassPerson2,
initialize : function (name ) {
dejavuClassPerson2.call (this , name);
},
setAddress : function (city, street ) {
dejavuClassPerson2.prototype .setAddress .call (this , 'France' , city, street);
}
}, true );
var dejavuClassParisLover2 = dejavu.Class .declare ({
$extends : dejavuClassFrenchGuy2,
initialize : function (name ) {
dejavuClassFrenchGuy2.call (this , name);
},
setAddress : function (street ) {
dejavuClassFrenchGuy2.prototype .setAddress .call (this , 'Paris' , street);
}
}, true );
var dejavuClassPerson3 = dejavu.Class .declare (function ( ) {
return {
initialize : function (name ){
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
};
}, true );
var dejavuClassFrenchGuy3 = dejavuClassPerson3.extend (function ($super ) {
return {
setAddress : function (city, street ) {
$super.setAddress .call (this , 'France' , city, street);
}
};
}, true );
var dejavuClassParisLover3 = dejavuClassFrenchGuy3.extend (function ($super ) {
return {
setAddress : function (street ) {
$super.setAddress .call (this , 'Paris' , street);
}
};
}, true );
var OvyPerson = Ovy .define ({
constructor : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var OvyChinaGuy = Ovy .define ({
extend : OvyPerson ,
constructor : function (name ) {
OvyChinaGuy .$superclass .call (this , name)
},
setAddress : function (city, street ) {
OvyChinaGuy .$super .setAddress .call (this , 'China' , city, street);
}
});
var OvyBeijingLover = Ovy .define ({
extend : OvyChinaGuy ,
constructor : function (name ) {
OvyBeijingLover .$superclass .call (this , name);
},
setAddress : function (street ) {
OvyBeijingLover .$super .setAddress .call (this , 'Beijing' , street);
}
});
var AugmentPerson = Object .augment (function ( ) {
this .constructor = function (name ) {
this .name = name;
};
this .setAddress = function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
};
});
var AugmentFrenchGuy = AugmentPerson .augment (function (base ) {
var setAddress = base.setAddress ;
this .constructor = function (name ) {
AugmentPerson .call (this , name);
};
this .setAddress = function (city, street ) {
setAddress.call (this , "France" , city, street);
};
});
var AugmentParisLover = AugmentFrenchGuy .augment (function (base ) {
var setAddress = base.setAddress ;
this .constructor = function (name ) {
AugmentFrenchGuy .call (this , name);
};
this .setAddress = function (street ) {
setAddress.call (this , "Paris" , street);
};
});
var PPerson = P (function (proto ) {
proto.init = function (name ) {
this .name = name;
};
proto.setAddress = function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
};
});
var PFrenchGuy = P (PPerson, function (proto, person ) {
var setAddress = person.setAddress ;
proto.init = function (name ) {
PPerson.call (this , name);
};
proto.setAddress = function (city, street ) {
setAddress.call (this , "France" , city, street);
};
});
var PParisLover = P (PFrenchGuy, function (proto, frenchGuy ) {
var setAddress = frenchGuy.setAddress ;
proto.init = function (name ) {
PFrenchGuy.call (this , name);
};
proto.setAddress = function (street ) {
setAddress.call (this , "Paris" , street);
};
});
var ClassifyPerson = Classify ({
init : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
var ClassifyFrenchGuy = Classify (ClassifyPerson , {
init : function (name ) {
this .parent (name);
},
setAddress : function (city, street ) {
this .parent ("France" , city, street);
}
});
var ClassifyParisLover = Classify (ClassifyFrenchGuy , {
init : function (name ) {
this .parent (name);
},
setAddress : function (street ) {
this .parent ("Paris" , street);
}
});
A.define ("AlchemyPerson" ,
{
constructor : function (name ) {
this .name = name;
},
setAddress : function (country, city, street ) {
this .country = country;
this .city = city;
this .street = street;
}
});
A.define ("AlchemyFrenchGuy" ,
{
use : ["AlchemyPerson" ],
setAddress : function (city, street ) {
this ._parent ("France" , city, street);
}
});
A.define ("AlchemyParisLover" ,
{
use : ["AlchemyFrenchGuy" ],
constructor : function (name ) {
this .callParent (arguments );
},
setAddress : function (street ) {
this ._parent ("Paris" , street);
}
});
var $__getDescriptors = function (object ) {
var descriptors = {}, name, names = Object .getOwnPropertyNames (object);
for (var i = 0 ; i < names.length ; i++) {
var name = names[i];
descriptors[name] = Object .getOwnPropertyDescriptor (object, name);
}
return descriptors;
}, $__createClassNoExtends = function (object, staticObject ) {
var ctor = object.constructor ;
Object .defineProperty (object, 'constructor' , {enumerable : false });
ctor.prototype = object;
Object .defineProperties (ctor, $__getDescriptors(staticObject));
return ctor;
}, $__superDescriptor = function (proto, name ) {
if (!proto) throw new TypeError ('super is null' );
return Object .getPropertyDescriptor (proto, name);
}, $__superCall = function (self, proto, name, args ) {
var descriptor = $__superDescriptor(proto, name);
if (descriptor) {
if ('value' in descriptor) return descriptor.value .apply (self, args);
if (descriptor.get ) return descriptor.get .call (self).apply (self, args);
}
throw new TypeError ("Object has no method '" + name + "'." );
}, $__getProtoParent = function (superClass ) {
if (typeof superClass === 'function' ) {
var prototype = superClass.prototype ;
if (Object (prototype) === prototype || prototype === null ) return superClass.prototype ;
}
if (superClass === null ) return null ;
throw new TypeError ();
}, $__createClass = function (object, staticObject, protoParent, superClass, hasConstructor ) {
var ctor = object.constructor ;
if (typeof superClass === 'function' ) ctor.__proto__ = superClass;
if (!hasConstructor && protoParent === null ) ctor = object.constructor = function ( ) {};
var descriptors = $__getDescriptors(object);
descriptors.constructor .enumerable = false ;
ctor.prototype = Object .create (protoParent, descriptors);
Object .defineProperties (ctor, $__getDescriptors(staticObject));
return ctor;
};
</script >
Setup JS
Teardown JS