2023前端面试八股文电子画册 您所在的位置:网站首页 请简述堆和栈的概念以及区别与联系 2023前端面试八股文电子画册

2023前端面试八股文电子画册

2023-04-25 16:06| 来源: 网络整理| 查看: 265

33

(1)第一种是工厂模式,工厂模式的主要工作原理是用函数来封装

创建对象的细节,从而通过调用函数来达到复用的目的。但是它有一

个很大的问题就是创建出来的对象无法和某个类型联系起来,它只是

简单的封装了复用代码,而没有建立起对象和类型间的关系。

(2)第二种是构造函数模式。js 中每一个函数都可以作为构造函数,

只要一个函数是通过 new 来调用的,那么就可以把它称为构造函数。

执行构造函数首先会创建一个对象,然后将对象的原型指向构造函数

的 prototype 属性,然后将执行上下文中的 this 指向这个对象,

最后再执行整个函数,如果返回值不是对象,则返回新建的对象。因

为 this 的值指向了新建的对象,因此可以使用 this 给对象赋值。

构造函数模式相对于工厂模式的优点是,所创建的对象和构造函数建

立起了联系,因此可以通过原型来识别对象的类型。但是构造函数存

在一个缺点就是,造成了不必要的函数对象的创建,因为在 js 中函

数也是一个对象,因此如果对象属性中如果包含函数的话,那么每次

都会新建一个函数对象,浪费了不必要的内存空间,因为函数是所有

的实例都可以通用的。

(3)第三种模式是原型模式,因为每一个函数都有一个 prototype

属性,这个属性是一个对象,它包含了通过构造函数创建的所有实例

都能共享的属性和方法。因此可以使用原型对象来添加公用属性和方

法,从而实现代码的复用。这种方式相对于构造函数模式来说,解决

了函数对象的复用问题。但是这种模式也存在一些问题,一个是没有

办法通过传入参数来初始化值,另一个是如果存在一个引用类型如

Array 这样的值,那么所有的实例将共享一个对象,一个实例对引用

类型值的改变会影响所有的实例。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有