<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>工厂模式</title>
</head>
<body>
<script>
// Factory Function
function createUser(name, age) {
// 1.创建一个空白对象 ---- 原材料
var obj = new Object(); // {}
// 2.添加属性和方法 ------- 加工
// 2.1 添加属性
obj.name = name;
obj['age'] = age;
// 2.2 添加方法
obj.getName = function() {
return '我的名字是' + this.name;
}
obj.getAge = function() {
return this.name + '已经' + this.age + '岁了.';
}
// return --------------- 出厂
return obj;
}
var obj1 = createUser('小明', 8);
console.log(obj1);
var obj2 = createUser('李四', 18);
console.log(obj2.getAge());
// 工厂模式 是为了解决实例化对象产生的大量重复代码这个问题的,
// 构造函数和普通函数的区别? 没有区别, 只是分工不同
// 工厂模式的缺点: 创建不同的对象时, 其中的属性和方法会重新建立,消耗内存, 无法识别创建的对象的类型,因为全部都是Object, 没有区分度,
//不像 Date Array 等函数可以明显区别出来, 继而有了 构造函数模式
</script>
</body>
</html>
上述运行结果: