工厂方法创建函数:
可以通过这个方法大批量的创建对象
代码案例:
function method(name,age,sex){
var a =new Object()
a.name=name
a.age=age
a.sex=sex
a.another=function(){
console.log(this.name)
}
return a
}
var fir=method("rain",15,"girl")
var sed =method("zhangsan",28,"boy")
console.log(fir)
console.log(sed)
结果:
使用工厂方法来创建对象,会简洁代码,也很简单,fir和sed都是Object类型
注意:在创建工厂方法后记得一定要写return,不然函数返回的值就是undefined
构造函数:
构造函数的执行流程:
1、创建一个新的对象
2、将创建的对象设置为函数的this,在构造函数中可以使用this来引用新建的对象
3、逐行执行构造函数中的代码
4、将新建的对象作为返回值返回
代码示例:
function p(name,sex,age){
this.name=name
this.age=age
this.sex=sex
this.byby=function(){
console.log(this.name+"函数中的")
}
}
var pp=new p("zhangsan",45,"boy")
var ppp=new p("lisi",41,"boy")
console.log(pp)
console.log(ppp)
pp.byby()
示例截图:
乍一看,感觉工厂方法和构造函数没有什么太大的区别,但是仔细看之后就会发现,工厂方法都是Object,但是构造函数的话,就是他构造的函数,比如刚刚举得例子,他就是函数p,而不是Object
如何检测一个对象是否是一个类的实例呢:
需要使用到instanceof方法:
instanceof方法:
语法规范: 对象 instanceof 构造函数即可
console.log(pp instanceof p)
是的话返回true,否则返回false
所有的对象都是Object的后代