使用工厂方法创建对象


㈠使用工厂方法创建对象

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

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM