请问这三种分别有什么实际应用场景?

请问这三种分别有什么实际应用场景?

<!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

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕言 2019-10-19 10:00:17

同学你好,可以使用对象的constructor属性判断对象的类型。

我们可以通过像下面的代码一样,切断实例与原型的关系:

http://img1.sycdn.imooc.com//climg/5daa6cf109d3ca5b07420654.jpg

如代码所示,切断p1与Person原型的关系后,p1.constructor === Person的结果为false,constructor属性失效了。

工厂模式没办法使用这种方法判读对象的类型,为什么呢?因为使用工厂模式创建的对象本质上只是一个Object类型,它们的constructor属性都是Object,所以没办法通过constructor区分对象的类型。

这些内容现阶段作为一个了解就可以了哦。

为了高效的为同学解答,可以在新建问题进行提问哦,

如果帮助到了你,欢迎采纳~祝学习愉快~

好帮手慕言 2019-10-18 14:38:30

同学你好,1、代码中多了一个点,如下:

http://img1.sycdn.imooc.com//climg/5da95d2109a6a65b03220081.jpg

2、单一使用一种模式各有优缺点, 推荐使用混合模式, 不过以后也可以根据实际需求, 灵活使用其中的任意一种方式。

混合模式中构造函数模式用于定义实例属性,而原型模式用于定义方法和共享属性。每个实例都会有自己的一份实例属性,但同时又共享着方法,最大限度的节省了内存。这种模式在ECMAScript中是使用最广泛、认同度最高的一种创建自定义对象的方法

原型模式可以让所有对象实例共享它所包含的属性及方法。它省略了构造函数传递初始化参数这一环节,但是会导致所有实例在默认情况下都取得了相同的属性值,这样非常不方便,

工厂模式是在函数内声明一个对象,给这个对象添加属性和方法,最后通过return将这个对象的引用暴露出去,这样调用函数之后就可以拿到对象的引用,访问对象的属性和方法, 工厂模式解决了创建多个相似对象的问题,但是工厂模式却无从识别对象的类型,因为全部都是Object

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 提问者 顾兆昱 #1
    工厂模式无法识别对象的类型,怎么理解? 其他模式可以识别对象的类型又怎么理解?
    2019-10-19 02:06:55
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师