前端面试题-深拷贝浅拷贝-浏览器存储-原型链-闭包-call,bind,apply的区别

news2024/11/15 16:25:03

前端面试题-深拷贝浅拷贝-浏览器存储-原型链-闭包-call,bind,apply的区别

  • 什么是深拷贝什么是浅拷贝
  • cookie,sessionStorage和localStrorage的区别是什么
  • 什么是原型链prototype原型 作用域
  • 什么是闭包,闭包的作用场景是什么
  • call bind和apply的区别

什么是深拷贝什么是浅拷贝

浅拷贝只是拷贝一层,更深层及的对象级别只是拷贝出来引用,不拷贝地址,两者属性值指向同一内存空间。简单来讲,就是改变其中一个对象,另一个对象也会跟着改变。
深拷贝,拷贝对象各个层级的属性。简单来讲,就是复制出来的每个对象都有属于自己的内存空间,不会互相干扰。
实现深拷贝 (这个一般VUE里面有个内置的模块loadsh 很好用和这个深拷贝 用的都是这个 但是下面也会沾一个深拷贝的代码)

function deepCopy(obj) {  
    if (typeof obj !== 'object' || obj === null) {  
        return obj;  
    }  
    let copy = Array.isArray(obj) ? [] : {};  
    for (let key in obj) {  
        if (obj.hasOwnProperty(key)) {  
            copy[key] = deepCopy(obj[key]);  
        }  
    }  
    return copy;  
}

cookie,sessionStorage和localStrorage的区别是什么

1.都可以用来存储数据
2.cookie一条数据大小不能超过4KB,最多不能存储超过20条,如果没有设置过期时间,那么在浏览器关闭后消失。
3.sessionStorage是会话存储,一条大小不能超过5M,数量没有限制,关掉页面数据消失
4.localStorage本地存储,一条大小不超过5M,数量没有限制,除非主动删除,否则数据不会消失

什么是原型链prototype原型 作用域

当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的proto隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会在再在构造函数的prototype的proto中查找,这样一层一层的向上查找就会形成一个链式结构,我们称为原型链。
在这里插入图片描述
作用域链
当代码在一个环境中执行时,会创建变量对象的一个作用域链来保证对执行环境有权访问的变量和函数的有序访问。作用域第一个对象始终是当前执行代码锁着环境的变量对象。

什么是闭包,闭包的作用场景是什么

闭包指的是一个函数可以访问另一个函数作用域中变量
闭包就是能够读取到其他函数内部变量的函数,由于在js语言中,只有函数内部的子函数才能读取局部变量。因此可以把闭包简单理解成“定义在一个函数内部的函数”,所以在本职上,闭包就是将函数内部和函数外部链接起来的一座桥梁
1.采用函数引用的方式的setTimeOut调用
2.小范围的代替全局变量
3.访问私有变量的特权方法
4.模块化
使用作用域的形式说明闭包是什么。当外层函数执行时,内层函数进行定义,此时内存函数生成作用域链,作用域链中包含外层函数的AO对象,导致AO无法是否,这就形成了闭包。
闭包缺点:会导致函数的变量一直保存在内存中,过多的闭包可能会导致内存泄漏

call bind和apply的区别

1.都可以更改this指向
2.call,bind 后面的第一个参数是指向的对象,第二个参数是往对象传的值
3.apply 后面的第一个参数是指向的对象,第二个参数是数组,数组里面是对象传的值(argumets 全部参数)
4.call和apply更改this执行会自动调用,bind需要手动调用返回一个函数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1411631.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android颜色选择器

Android颜色选择器,弹框提示选择颜色。效果如图。点击或者滑动圆环和底部横向渐变色调整颜色,中间圆圈的颜色就是最终选中的颜色。点击圆圈确认颜色。 使用 //颜色选择Dialogprivate void showColorPickDialog(int position, int colorInt){ColorPickerD…

Tomcat session复制及session共享技术

目录 1、环境 2、配置测试页面 3、配置session共享 前言: 为什么要做session复制或共享 实现Session复制或Session共享的目的是为了在多个Tomcat实例之间实现Session的无缝转移和共享,以提供更高的可伸缩性、负载均衡和容错性。以下是一些原因&#x…

浅谈DNS的工作原理及其作用

DNS,全称为Domain Name System,即域名系统,是一种用于将域名和IP地址相互映射的分布式数据库系统。它将可读的域名转换为对应的IP地址,使得用户可以更方便地通过域名来访问网络上的资源。今天锐成就简单探讨一下DNS的工作原理及其…

Redis 面试题 | 11.精选Redis高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Java服务端使用freemarker+wkhtmltoimage生成Echart图片

目录 1.通过 freemarker 将ftl转成html 1.1 freemarker 手册: 1.2 添加freemarker maven依赖 1.3 添加 echart-test.ftl 模版文件 1.4 添加 FreemarkerTool 工具类 1.5 添加测试main方法 1.6 运行,生成echart-test-时间戳.html 文件 2. 通过wkhtmltoimage将html 转为p…

Flink max maxby区别

max只会显示指定字段的大小变化,而maxBy会显示其他字段的变化。 max:取指定字段的当前的最大值,如果有多个字段,其他非比较字段,以第一条为准。 maxBy:取指定字段的当前的最大值,如果有多个字段…

企业出海数据合规:GDPR下数据出境的条件

一、GDPR对数据出镜的规制 GDPR第五章集中规定了数据跨境流动的形式,总的来说给出了三种个人数据出境的条件,分别是基于充分决定的数据传输;基于采取适当保障措施的数据传输;以及基于特殊情况的减损条款,分别对应的是…

windows下git pull超时,ping不通github

报错 ssh: connect to host github.com port 22: Connection timed out fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 解决办法 修改hosts 最后加一行,文件位置:…

Leetcode:二分搜索树层次遍历

题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例: 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,…

16、Kafka ------ SpringBoot 整合 Kafka (配置 Kafka 属性 及对应的 属性处理类 解析)

目录 配置 Kafka 及对应的 属性处理类配置KafkaKafka配置属性的约定代码演示生产者相关的配置消费者相关的配置 代码(配置文件)application.properties 配置 Kafka 及对应的 属性处理类 配置Kafka spring.kafka.* 开头的配置属性,这些属性将由…

MSB20M-ASEMI小功率家电专用MSB20M

编辑:ll MSB20M-ASEMI小功率家电专用MSB20M 型号:MSB20M 品牌:ASEMI 封装:UMSB-4 最大重复峰值反向电压:1000V 最大正向平均整流电流(Vdss):2A 功率(Pd):50W 芯片个数:4 引…

OpenHarmony开发——GN快速上手

背景 最近在研究鸿蒙操作系统的开源项目OpenHarmony,该项目使用了GNNinja工具链进行配置,编译,于是开始研究GN如何使用。 本文的所有信息均来自GN官网和本人个人体会。 GN快速入门 使用GN GN的主要功能是根据配置文件(.gn, BU…

【排序2】-交换排序

👻交换排序 🎄1、基本思想及特点🎄2、冒泡排序🎄3、快速排序(挖坑法)🎄4、快速排序优化🎊4.1 三数取中法选key🎊4.2 递归到小的子区间时,可以考虑使用插入排序…

Linux零碎点

目录 Linux基础命令 1、who: 2、hostname: 3、ifconfig: 4、pwd: 5、cd: 6、exit: 7、shutdown: 8、ls: 9、创建文件夹: 10、touch: 11、cp&#…

Java PDFBox 提取页数、PDF转图片

PDF 提取 使用Apache 的pdfbox组件对PDF文件解析读取和转图片。 Maven 依赖 导入下面的maven依赖&#xff1a; <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.30</version> &l…

实力上榜!安全狗入选《CCSIP 2023中国网络安全行业业全景册(第六版)》多个细项

1月24日&#xff0c;Freebuf发布了《CCSIP 2023中国网络安全行业业全景册&#xff08;第六版&#xff09;》。 作为国内云原生安全领导厂商&#xff0c;安全狗也入选多个细分领域。 厦门服云信息科技有限公司&#xff08;品牌名&#xff1a;安全狗&#xff09;创办于2013年&…

VS2022联合Qt5开发学习10(QT5.12.3联合VTK在VS2022上开发医学图像项目4——ScrollBar控制对比度、切面位置)

这篇博文是接着VS2022联合Qt5开发学习7&#xff08;QT5.12.3联合VTK在VS2022上开发医学图像项目2——十字叉标注&#xff09;-CSDN博客这篇博文延伸开发医学图像的显示渲染相关项目&#xff0c;主要介绍的是在之前显示的图像上增加滑块控制。 用到的内容有&#xff1a; VS2022…

Linux常用命令之文件管理篇

文章目录 前言文件管理命令1、cat 由第一行开始显示文件内容2、ls 列出目录3、cd 切换目录4、mkdir 创建新目录5、touch 创建文件6、 rm 移除文件或目录7、cp 即拷贝文件和目录。8、 mv 移动文件与目录&#xff0c;或修改名称9、 chmod&#xff1a;更改文件9个属性10、chown&am…

Kubernets Deployment详解

因为Pod生命周期是短暂的&#xff0c;一旦运行完成则立即回收&#xff0c;且涉及Pod的创建、自愈、删除等操作比较复杂&#xff0c;所以很少在Kubernetes中直接使用Pod。而是使用更高级的称为Controller&#xff08;控制器&#xff09;的抽象层&#xff0c;来完成对Pod的创建、…

如何解决服务器端口被占用的问题,减少带来的影响

在现代网络环境中&#xff0c;服务器扮演着至关重要的角色&#xff0c;其稳定性和安全性对企业的正常运营具有重要意义。然而&#xff0c;服务器端口被占用的问题却时常困扰着企业网络管理员。本文将深入探讨服务器端口被占用的影响&#xff0c;并提出相应的解决方案。 一、服务…