工厂模式简介:
工厂模式是一种软件工程领域一种广为人知的设计模式,这种模式抽象了创建对象的过程,因为ECMAScript无法穿类,所以开发人员就发明一个函数,用函数来封装以特定的接口创建对象
一,工厂模式创建对象 :
理解:通过函数封装对象,并通过调用函数来调用封装的对象
通过调用多次函数从而创建多次不同的对象。
function createObject(name,age) {
var obj=new Object();
obj.name=name;
obj.age=age;
obj.sayHi=function () { //添加方法
console.log("您好,我叫"+this.name+"我今年"+this.age);
};
return obj;
}
var per1=createObject("卡卡西",20);//调用函数
per1.name; //调用属性
per1.sayHi(); //调用方法
console.log(per1 instanceof Object);//true
注意点:工厂模式有返回值,因为通过调用函数会把把函数返回值(这里就是函数封装的对象)给返回,然后我们通过声明一个变量去接收,此时变量里面存的就是对象,然后通过对象调用属性与方法,如果没有返回值就会报错。
缺点:通过instanceof 检测类型为Object类型,但是没有具体知道这个对象属于什么 类型的。
二,自定义构造函数创建对象:
通过new的方式创建多次不同的对象
function Dog(name,age) {
this.name=name;
this.age=age;
this.eat=function () {
console.log("喜欢吃大骨头");
}
}
var Obj=new Dog("小黄","5");//实例化对象
Obj.name; //调用属性
Obj.eat(); //调用方法
console.log(Obj instanceof Dog);//true
可以具体知道当前对象是什么类型的通过instanceof 可以判断数据类型 。
总结:
工厂模式创建对象: 自定义构造函数创建对象:
- 函数名是小写 ; ------------------------------ > 函数首字母名字大写;
- 函数里面有new ; ------------------------------ > 函数里面没有new;
- 函数有返回值; ------------------------------ > 函数里面没有返回值;
- new之后的对象就是当前的对象 ; ------------------------------ > this就是当前的对象 ;
- 直接调用函数就可以创建对象 ------------------------------- > 通过new的方式创建对象
共同点:都是函数,都可以创建对象,都可以传入参数。
本人小白学习 javascript 与 php 请大家多多关注有更多的本人学习的心得分享出来 ! 大家多多支持