你的位置:首页 > Java教程

[Java教程]js创建对象的几种方式


一、工厂模式

function createStudent(name,age){       var o=new Object();      o.name=name;      o.age=age;      o.myName=function(){        alert(this.name);                };      return o;           }     var student1 =createStudent('yjj',15);     var student2 = createStudent('fff',18);//问题: 工厂模式没有解决对象识别的问题,不能确定一个对象的类型

二、构造函数模式

 function Student(name,age){      this.name=name;      this.age=age;      this.myName=function(){        alert(this.name);                };       }     var student1_ = new Student('yjj',15);     var student2_ = new Student('fff',18);              //new 关键字的作用     //1.创建一个对象     //2.将构造函数的作用域赋给新对象,this指向了新对象     //3.执行构造函数中的代码,为新对象添加熟悉     //4.返回新对象         //问题: 每个方法都要在每个实例上重新创建一遍

三、构造函数模式+原型模式

 function Student(name,age){       this.name=name;      this.age=age;           }     Student.prototype.myName=function(){        alert(this.name);               };           var student1__ = new Student('yjj',15);     var student2__ = new Student('fff',18);     student1__.myName();

四、动态原型模式

function Student(name,age){       this.name=name;      this.age=age;      if(typeof this.myName!="function"){//第一次进入         Student.prototype.myName=function(){          alert(this.name);                   };                }           }    var student1___ = new Student('yjj',15);     student1___.myName();

五、寄生构造函数模式

 function Student(name,age){      var o = new Object();      o.name=name;      o.age=age;      o.myName=function(){        alert(this.name);                };                return o;     }     var student1____ = new Student('yjj',15);     student1____.myName();     //这种模式的基本思想是创建一个函数,该函数的作用仅仅是封装创建对象的代码,然后再返回新创建的对象。

六、稳妥构造函数模式

 function Student(name,age){      var o = new Object();      var name=name;      var age=age;      o.myName=function(){        alert(name);                };                return o;     }     var student1_____ = new Student('yjj',15);     student1_____.myName();     //没有公共属性,而且其他方法也不用引用this的对象