zoukankan      html  css  js  c++  java
  • 使用工厂方法创建对象

    ㈠使用工厂方法创建对象

    通过该方法可以大量的创建对象

    function createPerson(name ,age ,gender){
           //创建一个新的对象
    
           var obj = new Object();
    
          //向对象中添加属性
    
          obj.name = name;
    
          obj.age = age;
    
          obj.gender = gender;
    
          obj.sayName = function(){
    
                alert(this.name);
    
    };
            //将新的对象返回
    
            return obj;  
    }
    
    //使用传参的方式创建
    var obj2 =  createPerson("猪八戒",28,"男");
    
    var obj3 =  createPerson("蜘蛛精",18,"女");
    
    var obj4 =  createPerson("白骨精",16,"女");
    
    obj3.sayName();

    ㈡存在的问题

    使用工厂方法创建的对象,使用的构造函数都是Object

    所以创建的对象都是Object这个类型

    就导致我们无法区分出多种不同类型的对象

     

    具体示例如下:

    function createPerson(name ,age ,gender){
           //创建一个新的对象
    
           var obj = new Object();
    
          //向对象中添加属性
    
          obj.name = name;
    
          obj.age = age;
    
          obj.gender = gender;
    
          obj.sayName = function(){
    
                alert(this.name);
    
    };
            //将新的对象返回
    
            return obj;  
    }
    
    var obj2 =  createPerson("猪八戒",28,"男"); 
    
    var obj3 =  createPerson("蜘蛛精",18,"女");
    
    var obj4 =  createPerson("白骨精",16,"女");
    
    obj3.sayName();
    
    
    
    //用来创建狗的对象
    
    function createDog(name ,age ){
    
           var obj = new Object();
    
           obj.name = name;
    
           obj.age = age;
    
           obj.sayHello = function(){
    
                alert("汪汪~~");
    
          };
    
            return obj;  
    }
    
    //创建一个狗的对象
    
    var dog = cerateDog("旺财",3);
    
    console.log(dog);
    
    console.log(obj4);

    结果显示:

     如上图所示,使用工厂方法创建的对象,使用的构造函数都是Object

    ㈢完整代码演示及讲解

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
            <script type="text/javascript">
                
                /*
                 * 创建一个对象
                 */
                var obj = {
                        name:"孙悟空",
                        age:18,
                        gender:"",
                        sayName:function(){
                            alert(this.name);
                        }
                };
                //obj.sayName();返回值:  孙悟空
    
                /*
                 *如果按上面的办法要多创建一些类似对象的话,就是单纯的复制粘贴,很麻烦
                 * 所以:
                 * 使用工厂方法创建对象
                 *  通过该方法可以大批量的创建对象
                 * 
                 * 通过此方法,把相同的部分都提取出来,然后再调用即可
                 */
                function createPerson(name , age ,gender){
                    //创建一个新的对象 
                    var obj = new Object();  
                    //这个obj和上面的obj不是一个obj,
                    //这个是局部的,上面是全局的
                    
                    //向对象中添加属性
                    obj.name = name;
                    obj.age = age;
                    obj.gender = gender;//现在,上面创建的对象中有了三个属性,一个方法
                    obj.sayName = function(){
                        alert(this.name);
                    };
                    //将新的对象返回
                    return obj;
                }
                
                /*
                 * 用来创建狗的对象
                 */
                function createDog(name , age){
                    var obj = new Object();
                    obj.name = name;
                    obj.age = age;
                    obj.sayHello = function(){
                        alert("汪汪~~");
                    };
                    
                    return obj;
                }
                
                var obj2 = createPerson("猪八戒",28,"");
                var obj3 = createPerson("白骨精",16,"");
                var obj4 = createPerson("蜘蛛精",18,"");
                /*
                 * 使用工厂方法创建的对象,使用的构造函数都是Object
                 *  所以创建的对象都是Object这个类型,
                 *  就导致我们无法区分出多种不同类型的对象
                 */
                //创建一个狗的对象
                var dog = createDog("旺财",3);
                
                console.log(dog);
                console.log(obj4);
                
                
            </script>
        </head>
        <body>
        </body>
    </html>

    ㈣小贴士

    有关工厂方法创造对象更加深入的知识,可以查看以下的博客,很详细深刻:

    1.https://blog.csdn.net/qq_34337272/article/details/80472071

    2.https://www.jianshu.com/p/9727526ef9d9

    3.https://www.cnblogs.com/lufangtao/archive/2012/04/26/2471958.html

  • 相关阅读:
    贷款计算公式
    P2P行业专业术语(最全)
    p2p投资理财入门篇(新手必备)
    2015年p2p网络借贷平台的发展现状
    MyEclipse中SVN的常见的使用方法
    linux下打开、关闭tomcat,实时查看tomcat运行日志
    Spring 向页面传值以及接受页面传过来的参数的方式
    Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例
    PowerDesigner概述(系统分析与建模)以及如何用PowerDesigner快速的创建出这个数据库
    MySQL 8.x 函数和操作符,官方网址:https://dev.mysql.com/doc/refman/8.0/en/functions.html
  • 原文地址:https://www.cnblogs.com/shihaiying/p/12020111.html
Copyright © 2011-2022 走看看