- 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的对象