美文网首页
学习过程补充

学习过程补充

作者: 松_THOM | 来源:发表于2021-04-14 12:47 被阅读0次

constructor

constructor中定义的属性可以称为实例属性(即定义在this对象上),constructor外声明的属性都是定义在原型上的,可以称为原型属性(即定义在class上)。hasOwnProperty()函数用于判断属性是否是实例属性。其结果是一个布尔值, true说明是实例属性,false说明不是实例属性。in操作符会在通过对象能够访问给定属性时返回true,无论该属性存在于实例中还是原型中。

数组去重问题

[...new Set(arr)] 用Set去重

一个页面从输入URL到页面加载显示完成,这个过程都发生了什么

一、浏览器根据请求的url 交给DNS域名解析,找到真实的ip,向服务器请求

二、服务器交给后台返回数据

三、浏览器对加载到的资源(html css js )进行语法的解析

四、载入解析到的资源文件,渲染页面 完成

如果一次性插入几万个Dom 如何实现页面不卡顿

一、不可能一次性插入几万个dom 用户眼睛也看不完

解决方案 虚拟滚动(只渲染可视化的区域 用户没有看到的不渲染)

React 在实战中遇到的问题

写一个深拷贝,考虑 正则,Date这种类型的数据

青铜段位

一般的情况 JSON.parse(JSON.stringify(data))就能满足需求,但是有一些数据,比如对象里面的值是Date类型,还有值循环引用,一些Error就不能满足需求了

白银段位

传入需要深拷贝的对象,判断是否是引用数据类型如果不是,返回自己,创建一个新对象,遍历它的属性,判断是否是自己的属性(hasOwnProperty ),然后递归调用自己, 最后返回结果

黄金段位

以上代码中,只是额外增加对参数target是否是数组的判断。执行Object.prototype.toString.call(target) === "[object Array]"判断target是不是数组,若是数组,变量result为[],若不是数组,变量result为{}。

在这里可以向面试官展示你的两个编程能力。

正确理解引用类型概念的能力。

精确判断数据类型的能力。

铂金段位

以上代码中利用额外的变量map来存储当前对象和拷贝对象的对应关系,当需要拷贝当前对象时,先去map中找,有没有拷贝过这个对象,如果有的话直接返回,如果没有的话继续拷贝,这样就巧妙化解的循环引用的问题。最后需要把变量map置为null,释放内存,防止内存泄露。

在这里可以向面试官展示你的两个编程能力。

对循环引用的理解,如何解决循环引用引起的问题的能力。

对内存泄露的认识和避免泄露的能力。

手写防抖和节流

防抖

所谓的防抖就是触发高频事件n秒内函数只执行一次,比如玩游戏的回城,在回城过程中如果重新按了回城建,回城时间便重新计算。比如在应用中存在一个搜索框,用户输入关键字,回渲染搜索结果列表,如果一次输入都像服务器请求数据这样做的效率是比较差的,可以在输入关键字停顿一段时间后,在向服务器请求数据

节流

节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次

React组件的生命周期

在react的componentWillReceiveProps(nextProps)生命周期中,可以在子组件的render函数执行前,通过this.props获取旧的属性,通过nextProps获取新的props,对比两次props是否相同,从而更新子组件自己的state。

脚手架的好处

用来快速帮助程序员创建一个基于XXX(react)库的模板项目

1.包含了所有需要的配置

2.指定好了所有的依赖

3.可以直接安装/编译/运行一个简单效果

作用:让代码更趋向于模块化,组件化,工程化

高阶组件

参数为组件,返回一个心的组件,我们常用的组件就是把props转化成UI,而高阶组件就是把一个组件转化成新的组件,让这个新的组件具有更多的功能 比如里面的路由 如用withRouter可以把props添加给navbar 这样navbar就可以拿到里面的一些数据

WeakSet 与 Set 的区别:

WeakSet 只能储存对象引用,不能存放值,而 Set 对象都可以

WeakSet 对象中储存的对象值都是被弱引用的,即垃圾回收机制不考虑 WeakSet 对该对象的应用,如果没有其他的变量或属性引用这个对象值,则这个对象将会被垃圾回收掉(不考虑该对象还存在于 WeakSet 中),所以,WeakSet 对象里有多少个成员元素,取决于垃圾回收机制有没有运行,运行前后成员个数可能不一致,遍历结束之后,有的成员可能取不到了(被垃圾回收了),WeakSet 对象是无法被遍历的(ES6 规定 WeakSet 不可遍历),也没有办法拿到它包含的所有元素

Set

成员唯一、无序且不重复

[value, value],键值与键名是一致的(或者说只有键值,没有键名)

可以遍历,方法有:add、delete、has

WeakSet

成员都是对象

成员都是弱引用,可以被垃圾回收机制回收,可以用来保存DOM节点,不容易造成内存泄漏

不能遍历,方法有add、delete、has

Map

本质上是键值对的集合,类似集合

可以遍历,方法很多可以跟各种数据格式转换

WeakMap

只接受对象作为键名(null除外),不接受其他类型的值作为键名

键名是弱引用,键值可以是任意的,键名所指向的对象可以被垃圾回收,此时键名是无效的

不能遍历,方法有get、set、has、delete

null 和undefined的区别

null表示没有对象,即该处不应该有值

undefined表示缺少值,即此处应该有值,但没有定义

null 默认转成 0

undefined 默认转成 NaN

相关文章

网友评论

      本文标题:学习过程补充

      本文链接:https://www.haomeiwen.com/subject/chntlltx.html