/* 各种方式new实例化对象的测试比较 */ //方式一:Public方式一,在类里面声明public方法和属性 var myClassPublicStyle1 = function(){ this.name = "supersha"; this.age = 24; this.addAge = function(){ this.age++; } } //方式二:public方式二,在类外面通过prototype来加载属性和方式 var myClassPublicStyle2 = function(){}; myClassPublicStyle2.prototype = { name: "supersha", age: 24, addAge: function(){ this.age++; } } //方式三:private的方式,使用私有属性和特权方法的方式 var myClassPrivate = function(){ var name = "supersha"; var age = 24; this.addAge = function(){ age++; return age; } } //方式四:这种方式是混合模式吧,返回对象 var myClassSpecialObject = function(){ var name = "supersha"; var age = 24; var addAge = function(){ age++; } return { name: name, age: age, addAge: addAge } } //方式五:这种方式也是混合模式吧,返回实例对象 var myClassSpecialFunction = function(){ var name = "supersha"; var age = 24; var addAge = function(){ age++; } return new function(){ this.name=name; this.age=age; this.taddAge=addAge } } function myTime(){ var time1; var time2; this.setTime1 = function(time){ time1 = time.getTime(); } this.setTime2 = function(time){ time2 = time.getTime(); } this.showTime = function(){ return time2-time1; } } var message = ""; var aa = new myTime(); //----------------------------------- message="myClassPublicStyle1() //Public方式一,在类里面声明public方法和属性 耗时\n "; aa.setTime1(new Date()); for (var i = 0; i < 10000; i++) { var pub = new myClassPublicStyle1(); } aa.setTime2(new Date()); message +=aa.showTime()+" \n"; //----------------------------------- //----------------------------------- message +="myClassPublicStyle2()// public方式二,在类外面通过prototype来加载属性和方式 耗时\n "; aa.setTime1(new Date()); for (var i = 0; i < 10000; i++) { var pub = new myClassPublicStyle2(); } aa.setTime2(new Date()); message +=aa.showTime()+" \n"; //----------------------------------- //----------------------------------- message +="myClassPrivate() //private的方式,使用私有属性和特权方法的方式 耗时\n "; aa.setTime1(new Date()); for (var i = 0; i < 10000; i++) { var pri = new myClassPrivate(); } aa.setTime2(new Date()); message +=aa.showTime()+" \n"; //----------------------------------- //----------------------------------- message +="myClassSpecialObject() //方式四:这种方式是混合模式吧,返回对象 耗时\n "; aa.setTime1(new Date()); for (var i = 0; i < 10000; i++) { var spe = new myClassSpecialObject(); } aa.setTime2(new Date()); message +=aa.showTime()+" \n"; //----------------------------------- //----------------------------------- message +="myClassSpecialFunction() //这种方式也是混合模式吧,返回实例对象 耗时\n "; aa.setTime1(new Date()); for (var i = 0; i < 10000; i++) { var spe = new myClassSpecialFunction(); } aa.setTime2(new Date()); message +=aa.showTime()+" \n"; //----------------------------------- alert(message);