犄角旮旯

JOSN.parse(JSON.stringify(obj))实现深拷贝的弊端

1.时间对象转换之后会变成字符串,不再是时间对象


image.png

2.对象中有 new regExp 或 Error 对象,转换之后会得到空对象


image.png

3.对象中有方法,undefined , 转换之后会丢失
image.png

image.png

4.对象中有 NaN 、infinity 和 - infinity , 转换后会变为 null


image.png

5.JSON.stringify()只能序列化对象的可枚举的自有属性,对象中的对象是由构造函数生成的,转换后会丢弃对象constructor
6、如果对象中存在循环引用的情况也是无法正确实现深拷贝。
自定义指令

vue2自定义指令生命周期
1.bind 只调用一次,指令第一次绑定到节点时调用,用这个钩子可以定义一个初始化的操作
2.inserted 被绑定元素插入父节点时调用(父节点存在即可调用,不必存在于document中)。
3.update 被绑定于元素所在的模板更新时调用,而无论绑定值是否变化。通过比较更新前后的绑定值,可以忽略不必要的模板更新。
4.componentUpdated 被绑定元素所在模板完成一次更新周期时调用。
5.unbind 只调用一次,指令与元素解绑时调用。

vue3 自定义指令生命周期
created :绑定元素属性或事件监听器被应用之前调用。该指令需要附加需要在普通的 v-on 事件监听器前调用的事件监听器时,这很有用。
beforeMounted :当指令第一次绑定到元素并且在挂载父组件之前执行。 ( 替换 bind )
mounted :绑定元素的父组件被挂载之后调用。
beforeUpdate :在更新包含组件的 VNode 之前调用。
updated :在包含组件的 VNode 及其子组件的 VNode 更新后调用。( 替换 componentUpdated )
beforeUnmounted :在卸载绑定元素的父组件之前调用
unmounted :当指令与元素解除绑定且父组件已卸载时,只调用一次。 ( 替换 unbind )

模块化

模块化是指解决一个复杂问题的时候,自顶向下 逐层 将系统分割成 若干模块的过程。 对于整个系统来说,模块是可组合,可分解,可替换的单元

编程领域中的模块化,就是 遵守固定的规则 ,把一个大文件 拆成 独立并依赖的 多个小模块。

将代码进行模块化拆分的好处
1.提高了代码的 复用性
2.提高了代码的 可维护性
3.可以实现 按需加载

JavaScript 是单线程还是多线程? 可不可以实现JS多线程?

JavaScript 是单线程
可以实现多线程,通过 web worker 开启子线程。Worker 线程在后台运行,与主线程互不干扰。

new Worker('worker.js',{name:'name'})

Worker()构造函数,可以接受两个参数。第一个参数是脚本的网址(必须遵守同源政策),该参数是必需的,且只能加载 JS 脚本,否则会报错。第二个参数是配置对象,该对象可选。它的一个作用就是指定 Worker 的名称,用来区分多个 Worker 线程

想了解更多的话去阮一峰老师的博客瞧瞧 点击这里

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,072评论 0 29
  • 1 MVC 和 MVVM 区别 MVC MVC 全名是 Model View Controller,是模型(mod...
    c88cfe19384a阅读 1,558评论 0 1
  • [TOC] Vue 学习笔记 Vue 源码解析 - 主线流程 Vue 源码解析 - 模板编译 Vue 源码解析 -...
    Whyn阅读 628评论 0 1
  • 常见前端面试题 第一天 ✨ 1. HTML5有哪些新特性?如何处理HTML5新标签的浏览器兼容问题?如何区分HTM...
    小曼很nice阅读 1,152评论 2 12
  • 一、简介 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同...
    想聽丿伱說衹愛我阅读 451评论 0 1