javascript创建对象的方法--工厂模式(非常好理解)

javascript创建对象的方法--工厂模式(非常好理解)

一、简介

创建对象的方法

本质上都是把"属性"和"方法",封装成一个对象

创建对象的基本模式

  • 普通创建对象的方法,缺陷:
    • 如果创建多个对象会比较繁琐,效率低
    • 实例与原型之间,没有任何办法,可以看出有什么联系。

工厂模式

  • 工厂模式:使用创建并返回特定类型的对象的工厂函数(其实就是普通函数,没啥区别,只是叫法不同)
  • 创建过程类似于工厂生产产品的过程,即:原材料--加工--产品...
  • 解决了多次重复创建多个对象的麻烦。
  • 问题:
    • 创建出的实例之间没有内在的联系,不能反映出它们是同一个原型对象的实例。
    • 创建对象的时候没有使用 new 关键字
    • 会造成资源浪费,因为每生成一个实例,都增加一个重复的内容,多占用一些内存。

二、代码

 1 <!DOCTYPE html>
 2 <html lang="zh-cn">
 3 <head>
 4   <meta charset="utf-8">
 5   <title>课堂演示</title>
 6 </head>
 7 <body>
 8   <script>
 9   //基本模式
10       var people1=new Object();
11       people1.name='孙悟空';
12       people1.weapon='金箍棒';
13       people1.run=function(){
14         return this.name+'的武器是'+this.weapon
15       }
16      // alert(people1.name) 
17       //alert(people1.run()) //注意方法的调用需要加()
18      //该方法如果创建多个对象就会比较繁琐,如下...... 
19       var people2=new Object();
20       people2.name='猪八戒';
21       people2.weapon='钉耙';
22       people2.run=function(){
23         return this.name+'的武器是'+this.weapon
24       }
25 //工厂模式
26       function creatPeople(name,weapon){
27         var people=new Object() //可以类比为加工对象的原材料
28         people.name=name;
29         people.weapon=weapon;
30         people.run=function(){
31            return this.name+'的武器是'+this.weapon
32         }  //以上步骤可以类比为加工对象的过程
33         return people //注意一定要讲创建的对象返回 
34         //可以类比为产品加工完毕出厂的工作
35       }
36        var wukong=creatPeople('孙悟空','金箍棒');
37        var bajian=creatPeople('猪八戒','钉耙');
38       //alert(wukong.run())
39       //alert(bajian.run())
40     //new 关键字
41     function fun(){
42       alert(this)
43     }
44     fun()
45     new fun()
46   </script>
47 </body>
48 </html>

1、因为普通创建对象的方法繁琐重复效率低等诸多缺点,所以有了工厂模式

2、工厂模式就是一个简单的工厂,也是一个简单的函数,提供参数,来给你创建对象

3、工厂模式其实就是对普通创建对象进行了一点点的封装,很简单

4、对象的实质是变量,方法的实质是函数,属性的实质也是函数,所以工厂模式的基础就是函数变量之间是可以相互嵌套的

5、工厂模式就是用普通函数嵌套了 创建对象 

原文地址:https://www.cnblogs.com/Renyi-Fan/p/8978525.html