码迷,mamicode.com
首页 > Web开发 > 详细

js创建对象的6种方式

时间:2016-02-23 09:36:26      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

一、工厂模式

技术分享
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的对象
技术分享

 

js创建对象的6种方式

标签:

原文地址:http://www.cnblogs.com/shouce/p/5208716.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!