㈠使用工廠方法創建對象
通過該方法可以大量的創建對象
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