请问这三种分别有什么实际应用场景?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<script type="text/javascript">
// 工厂模式
function factory(){
var obj={}
obj.name="imooc"
obj.action=function(){
alert.("前端")
}
return obj
}
var obj1=factory()
// 原型模式
function origin(){}
origin.prototype={
name:"imooc",
action:function(){
alert("前端")
}
}
var obj2= new origin()
// 混合模式
function mix(name,text){
this.name=name;
this.action=function(){
alert(text)
}
}
mix.prototype={
sex:"female"
}
var obj3=new mix()
</script>
</body>
</html>正在回答 回答被采纳积分+1
同学你好,可以使用对象的constructor属性判断对象的类型。
我们可以通过像下面的代码一样,切断实例与原型的关系:

如代码所示,切断p1与Person原型的关系后,p1.constructor === Person的结果为false,constructor属性失效了。
工厂模式没办法使用这种方法判读对象的类型,为什么呢?因为使用工厂模式创建的对象本质上只是一个Object类型,它们的constructor属性都是Object,所以没办法通过constructor区分对象的类型。
这些内容现阶段作为一个了解就可以了哦。
为了高效的为同学解答,可以在新建问题进行提问哦,
如果帮助到了你,欢迎采纳~祝学习愉快~
同学你好,1、代码中多了一个点,如下:

2、单一使用一种模式各有优缺点, 推荐使用混合模式, 不过以后也可以根据实际需求, 灵活使用其中的任意一种方式。
混合模式中构造函数模式用于定义实例属性,而原型模式用于定义方法和共享属性。每个实例都会有自己的一份实例属性,但同时又共享着方法,最大限度的节省了内存。这种模式在ECMAScript中是使用最广泛、认同度最高的一种创建自定义对象的方法
原型模式可以让所有对象实例共享它所包含的属性及方法。它省略了构造函数传递初始化参数这一环节,但是会导致所有实例在默认情况下都取得了相同的属性值,这样非常不方便,
工厂模式是在函数内声明一个对象,给这个对象添加属性和方法,最后通过return将这个对象的引用暴露出去,这样调用函数之后就可以拿到对象的引用,访问对象的属性和方法, 工厂模式解决了创建多个相似对象的问题,但是工厂模式却无从识别对象的类型,因为全部都是Object
如果帮助到了你,欢迎采纳~祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星