Revealing proto test
Test the performance of prototype syntax
by arctelix
HTML
<div id="output"></div>
JavaScript
function MyClass1(name){
this.name = name;
}
MyClass1.prototype = new function () {
var static = 0;
var getStatic = function () {
return static;
}
this.incStatic = function () {
static++;
return getStatic.call(this);
}
this.constructor = MyClass1
};
var mc1 = new MyClass1('mc1')
function MyClass2(name){
this.name = name;
}
MyClass2.prototype = function () {
var static = 0;
function getStatic () {
return static;
}
function incStatic() {
static++;
return getStatic.call(this);
}
return {
incStatic:incStatic,
constructor:MyClass2
};
}();
var mc2 = new MyClass2('mc2')
var mc1a = new MyClass1('mc1a')
var mc2a = new MyClass2('mc2a')
var output = document.getElementById('output')
console.log(mc1)
output.innerHTML = (mc1.name+' - incStatic(): '+mc1.incStatic()+'<br>')
output.innerHTML += (mc1a.name+' - incStatic(): '+mc1a.incStatic()+'<br>')
output.innerHTML +=(mc1.name+' - incStatic(): = '+mc1.incStatic()+'<br>')
try{
output.innerHTML +=(mc1a.name+' - getStatic(): '+mc1a.getStatic()+'<br>')
}
catch(e){
e = e.message.replace('<', '').replace('>', '')
output.innerHTML +=(mc1a.name+' - getStatic(): '+e+'<br>')
}
console.log(mc2)
output.innerHTML +=(mc2.name+' - incStatic(): '+mc2.incStatic()+'<br>')
output.innerHTML +=(mc2a.name+' - incStatic(): '+mc2a.incStatic()+'<br>')
output.innerHTML +=(mc2.name+' - incStatic(): '+mc2.incStatic()+'<br>')
try{
output.innerHTML +=(mc2a.name+' - getStatic(): '+mc2a.getStatic()+'<br>')
}
catch(e){
e = e.message.replace('<', '').replace('>', '')
output.innerHTML +=(mc2a.name+' - getStatic(): '+e+'<br>')
}