一 代码
个人不推荐使用下面代码中的工厂方法创建对象,具体看结果的截图解释。
<!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);
}
};
/*
* 使用工厂方法创建对象
* 通过该方法可以大批量的创建对象
*/
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;
}
/*
* 用来创建狗的对象
*/
function createDog(name , age){
var obj = new Object();
obj.name = name;
obj.age = age;
obj.sayHello = function(){
alert("汪汪~~");
};
return obj;
}
/*
* 1. 使用工厂方法创建的对象,使用的构造函数都是Object,
* 所以创建的对象都是Object这个类型,
* 就导致我们无法区分出多种不同类型的对象。所以这种创建方法也是不推荐的。
*/
var obj2 = createPerson("猪八戒",28,"男");
var obj3 = createPerson("白骨精",16,"女");
var obj4 = createPerson("蜘蛛精",18,"女");
var dog = createDog("旺财",3);
console.log(obj4);
console.log(dog); // 打印出来的对象,前面是:Object开头,而不是我们想要的开头,例如Dog。
</script>
</head>
<body>
</body>
</html>
二 结果
下面结果看到,使用工厂方法创建的话,对象的,名字都是Object,有时这是不太方便阅读的,所以个人不太推荐这样创建,而且也不是真正的工厂创建方法。