一、用途
用于创建复杂的对象,只需要获得对象,并不需要知道对象创造的过程。
二、思想
将对象的创造和实现分离。
三、优点
- 更好的代码封装,为使用者提供便捷,不需要理解实现的过程。
- 扩延展性强。
四、缺点
更加抽象,具有更高的代码复杂度。
五、示例
function getInfo(name){
const obj = {
"小明":new GetXiaoMing(),
"小刚":new GetXiaoGang(),
}
if(obj[name]){
return obj[name];
}else{
return "不存在此人"
}
}
function GetXiaoMing(){//构造函数
this.name = "小明";
GetXiaoMing.prototype.getInfo = function(){
return {
age:10,
school:"阳光小学",
}
}
}
class GetXiaoGang {//class类
constructor(){
this.name = "小刚";
}
getInfo(){
return {
age:11,
school:"实验小学",
}
}
}
let student1 = getInfo("小明");
let student2 = getInfo("小刚");
console.log(student1.getInfo());//小明 -> 10岁 在阳光小学
console.log(student2.getInfo());//小刚 -> 11岁 在实验小学