当前位置:网站首页 > Vue.js开发 > 正文

js深拷贝和浅拷贝的实现方式(js浅拷贝和深拷贝原理)



1、什么是mvc、mvp、mvvm?什么是前后端分离,前后端分离的优缺点?

mvc是model-view-control

https://img1.sycdn.imooc.com//5b71441c00015da504160175.jpg

2、什么是单页面应用?为什么使用单页面应用?单页面应用路由实现的方法和原理?

单页面应用可以叫做单页面多片段切换应用。通过控制页面的删除或者隐藏来实现单页面应用。单页面在移动端使用比较广泛。可以带来极致的体验。

https://img1.sycdn.imooc.com//5b725f76000141a506980682.jpg

3、什么是单线程?单线程与多线程的区别?什么是进程?进程和线程的区别和联系?

单线程:就是同一时间只能做一件事情。JavaScript是单线程的。

多线程:就是同一时间可以同时做好几件事情。

进程中包含多个线程,单线程,多线程都是相对于同一个进程来说的。

一个浏览器tab页面就是一个进程。进程中包含js引擎线程,GUI线程、事件触发线程等。

进程是CPU资源分配的最小单位。

线程是CPU的最小调度单位。

4、异步调用的常用方法?什么是异步调用?

回调函数、promise、async/await、generate。

异步调用主要是通过状态来管理的,到了这个时间点,或者任务完成后,就开始着手工作。例如:

setTimeout(function(){},100),这个也可以看成是异步调用,100ms后开始执行函数内的代码。

5、对webpack的理解?为什么需要webpck?对构建、打包、编译的理解?

webpack它是代码编译工具,有入口,出口、loader和插件。其天生就代码分割、模块化,webpack2.0中加入tree shaking,用来提取公共代码,去掉死亡代码。

构建、打包、编译他们都是为了提高开发效率,让前端朝着标准化的路上继续迈进

git的全部工作都是在这三个区之间工作。三个区是工作区,暂存区、远程仓库区。

建立一个git仓库:git init

clone 远程仓库:git clone +git仓库地址

本地仓库和远程仓库建立连接:git remote add origin +git地址

拉去远程仓库 git pull origin master(master分支)

提交到暂存区:git add +文件

提交到master,此时Header指针指到这里:git commit -m '文件描述’

推送到远程仓库:git push origin master

新建分支:git branch dev

删除本地分支:git branch -d dev (删除分支时,必须切换到另一个分支,才能删除想要删除的分支)

删除远程分支:git push origin -d dev

版本回退:git reset --hard HEAD^。

github是全球最大的代码托管平台。npm是全球最大的包管理工具。

github使用git clone +代码 ,可以下载代码。

npm通过npm install 安装,可以直接使用。

7、什么是构造函数?什么是原型链?原型链的用途?什么是对象?对象的用途?

构造函数也是函数,无非让其具有扩展性功能,它使用扩展性功能又用了原型链的原理,原型链又用了计算机中核心局部性原理,你自身没有往上级找,上级没有继续往外找,这其中其实闭包也用了这种原理。

对象:万物皆是对象,就是先总体看待事情,然后再局部。对象中又有key和value。也可能包含方法。

8、对http的认识?从输入url到页面展现都发生了什么?

这个参考链接:

9、什么是BFC?如何实现BFC?盒子模型认识?如何实现标准盒模型?

这个是css中的块级格式化上下文。

盒子模型有标准盒模型和IE盒模型,

https://img1.sycdn.imooc.com//5b725e3500018c4207550100.jpg

10、什么是栈,什么是堆?栈用来存储什么,堆用来存储什么?

栈用来存储基本变量类型(numberstringBoolean耯eind ull)和指针地址。

堆用来存储对象(key和val)或者函数大括号里面的代码。

栈和堆有下面的连接关系

https://img1.sycdn.imooc.com//5b7129ec0001bbfc03830419.jpg

11、什么是组件?什么是插件?组件和插件的区别和联系?

组件是模版和UI逻辑的结合。而插件可以是一堆组件的结合,它是框架在功能上的扩展,如vue.prototype.add=function(){}

他们都是在封装、继承、多态思想上产生而来。

区别:

12、对nodejs的认识?什么是事件驱动?什么是非阻塞I/O?

nodejs是基于chrome V8引擎,以事件驱动,非阻塞I/O模型。他是一个可以在服务端运行js的环境。

事件驱动:就是触发一个事件,然后回调,再执行的过程。

非阻塞I/O:以异步来执行函数,先执行同步任务,耗时任务放在事件队列中,以此轮询执行

13、什么是hybrid?为什么使用hybrid?hybrid为什么可以不用审核直接发布?hybrid如何使用?

hybrid:H5与原生端交互混合技术方案

web、native两个人交流,要么web主动,要么native主动,要么web、native都主动。

hybrid本质是在原生的App中,使用webview作为容器承载web页面。这样就需要h5与native实现双向通信,这里我们就需要翻译员,保证我们两者的正常通信---跨语言通讯方案。native使用Java,object-c,h5使用jsbridge。两者通信翻译员就是jsBridge。是要有翻译员就要给他提供最优质的环境webview。一切的翻译也是通过webview的翻译机制。

基于webview的机制和开发的api,有三种方案

14、什么是浅拷贝?什么是深拷贝?如何实现深拷贝?

浅拷贝可以看做是一个快捷方式,实际共用一个内存地址。es6中的Object.assign({target},{obj})就是浅拷贝。

深拷贝相对于新开辟一块内存地址。使用JSON.stringify()可以实现深拷贝。

15、什么是缓存?缓存的分类?cache、localStorage和sessionStorage和理解?

缓存是为了更快的进行磁盘I/O而存在的。有浏览器缓存、CDN缓存、路由缓存、服务器缓存等。

cache中会有http响应头和响应行的信息,如cache-control:max-age:20000。

还有就是cookie。cookie一般浏览器不超过4k ,主要是用来保存用户登陆信息。当发送请求时,会自动把其带上。

而localStorage和sessionStorage是浏览器本地storage中用来存取值的,sessionStorage浏览器关闭了就不存在了,localStorage浏览器关闭依然存在。

16、什么是闭包?闭包的用途?什么是递归?递归调用的用途?

闭包就是有权访问另一个函数作用域内的变量函数都是闭包。

闭包就是一个函数引用另外一个函数的变量,因为变量被引用着所以不会被回收,因此可以用来封装一个私有变量。这是优点也是缺点,不必要的闭包只会徒增内存消耗!另外使用闭包也要注意变量的值是否符合你的要求,因为他就像一个静态私有变量一样

下面的就是闭包

https://img1.sycdn.imooc.com//5b72628900011edd03260248.jpg

到此这篇js深拷贝和浅拷贝的实现方式(js浅拷贝和深拷贝原理)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • map转json字符串 转义符(map转换成json字符串)2025-09-06 10:36:10
  • ubuntu20.04安装cmake(ubuntu20.04安装桌面)2025-09-06 10:36:10
  • cjson库内存泄露(jna 内存泄露)2025-09-06 10:36:10
  • ubuntu 18.04 换源(ubuntu18.04换源 两种方法)2025-09-06 10:36:10
  • pcie5.0什么时候出(pcie5.0 intel)2025-09-06 10:36:10
  • plsql10.0.5注册码(plsql10.0.3.1701注册码)2025-09-06 10:36:10
  • vue编译后可以反编译(vuejs反编译)2025-09-06 10:36:10
  • PCIe5.0显卡延长线(显卡延长线pcie3能插pcie4.0吗)2025-09-06 10:36:10
  • vue 插槽(vue 插槽 内存泄露)2025-09-06 10:36:10
  • mha-al00是华为手机的什么型号(jsnal00是华为什么型号手机)2025-09-06 10:36:10
  • 全屏图片