请问这三种分别有什么实际应用场景?
<!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 星