自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 手撕promise

Proxyvue3.0应用该特性替代Object.defineproperty解决的痛点:监听不到属性的添加和删除监听数组索引和长度的变更不能支持Map,Set,WeakMap和WeakSetPromise A+规范要求promise状态:Pending,Fulfilled and RejectedPending=>Fulfilled or RejectedFulfilled必须有一个不可改变的值,且不可再转换状态Rejected必须有一个不可改变的原因,且不可再转换状态

2020-09-30 21:50:26 231

原创 前端手撕

前端手撕newfunction _new(fn,...args){ const obj = Object.create(fn.prototype); const res = fn.apply(obj,args) return res instanceof Object ? ret: obj;}创建一个空对象修改这个对象的原型指向函数的原型修改this的指向为该新空对象判断构造函数有没有return返回值,有的话直接返回这个返回值,否则返回第一步创建的对象call

2020-09-26 23:13:45 163

原创 js 生成器和迭代器

JS生成器和迭代器迭代器为什么会说到这个呢?原因就是从扩展运算符和for…of的使用中发现这个问题的let b = [1,2,3,4]Math.max(...b)=>4let a ={1:2,5:6,8:9}Math.max(...a)=>Uncaught TypeError: a is not iterable嗯,我们从提示上知道a并不是可迭代的,那怎么做呢?看一下数组上的原型方法MDN对于迭代器的描述:在 JavaScript 中,迭代器是一个对象,它定义一个序列

2020-09-24 00:44:22 287

原创 网易笔试

9.12前端网易笔试编程题给定一棵数的n个节点和m条边,形如“1 left 2”,请你判断有多少个节点,它拥有两个叶子节点因为节点是按顺序123456排的,我们可以直接把他当成索引来使用创建一个二维数组,n行两列,遍历边,第一个数字为数组索引,left对应第一列[][0],right对应第二列[][1],第二个数就为内容。遍历完边之后我们就得到了一个节点映射子节点的数据结构,遍历数组,查找对应节点是否有两个非空值,再检查对应非空值是否为叶子节点(用这个值当索引得到对应位置的值,[][0],[]

2020-09-13 14:20:11 206

原创 JS红宝书学习记录(五)

js红宝书20-25JSONstringfy(JSON[,过滤器参数array,缩进和空白符数目num]),制定过滤器后输出的字符串将只包含对应属性toJSON()给JSON对象定义该方法重写stringfy序列化顺序若存在toJSON方法且能通过它取得有效值,则调用该方法,否则返回对象本身如果提供了过滤器,则应用过滤器过滤,传入值是第一步返回的序列化如果提供了缩进,再重新序列化parse(JSON字符串,reviver(还原函数))AJAXIE7之前需要使用MSXML库中的一个A

2020-08-03 21:31:25 301

原创 JS红宝书学习记录(四)

js红宝书13-19事件事件处理程序DOM0级事件处理程序:on+事件名,如onresize,onload等DOM2级事件处理程序:addHandler: (element, type, handler) => { if(element.addEventListener) { element.addEventListener(type, handler, false);//false表示默认冒泡,true开启捕获。 } else if(element

2020-08-03 10:25:21 193

原创 JS红宝书学习记录(三)

js红宝书学习记录7-12argument.callee,一个指向正在执行的函数的指针,解决js递归对函数名的耦合。闭包之前在网上看过很多相关的解释,虽然能看懂,但就是有一种传声筒传达的感觉,越传越失真的感觉,下面来看原汁原味的。**定义:**指有权访问另一个函数作用域中的变量的函数。本质:函数;特点:有权访问其他作用域的变量。原理:闭包的作用域通常包含着它自己的作用域,包含函数的作用域以及全局作用域。通常函数作用域及其所有变量都会在函数执行时销毁但是,当函数返回了一个闭包时,这个函数的

2020-07-28 20:48:03 230

原创 React开发组件-气泡提示,对话框与标签页

React开发组件-气泡提示,对话框与标签页这是项目的结构:dialog组件:用法:<Dialog title="Basic Modal" visible={visible} onOk={handleOk} onCancel={handleCancel} > <p>Some contents...</p> <p>Some contents...</p>

2020-07-20 17:29:22 1784

原创 JS红宝书学习记录(二)

js红宝书学习记录4-6两个垃圾清除策略1.标记清除运行时标记所有变量,(书中提到了使用位作为标记去记录变量进入还是离开了环境,这一点类似于操作系统中的位图法),然后去除环境中的变量和环境中被变量引用(闭包的起因!!)的标记。之后再被标记的变量都是可清除变量,定时清理。2.引用计数跟踪记录每个值被引用的次数。这个跟文件系统的硬链接数有点类似。function f(){ var objectA=new Object(); var objectB=new Object();

2020-07-16 21:28:27 157

原创 JS红宝书学习记录(一)

红宝书记录1-3三个组成部分:ECMAScript,DOM,BOMscript标签属性:1.外部脚本使用:src(URL)async 异步下载,不阻塞文档呈现。不保证顺序执行defer 延迟下载,文档完全呈现后才下载2.type 类型即MIME:媒体类型(通常称为 Multipurpose Internet Mail Extensions 或 MIME 类型 )是一种标准,用来表示文档、文件或字节流的性质和格式。它在IETF RFC 6838中进行了定义和标准化。常用text/javas

2020-07-14 21:29:25 347

原创 webpack学习

webpack学习模块化的优点作用域封装重用性解除耦合大体结构(function(modules){ var installedModules = {}; function __webpack_require__(moduleId){//可认为浏览器的require /**/ } return __webpack_require__(0); //入口文件})([/*模块数组*/])核心方法function __webpack_requi

2020-07-14 19:51:46 176

原创 React diff算法

React diff算法看到后觉得加深了理解:组件只不过是一段Html结构的包装容器,并且具备管理这段Html结构的状态等能力。React diff 是Virtual DOM 的加速器,具体问题就是计算一棵树形结构转换成另一棵树形结构的最少操作。三个策略:基于三个策略:Web UI 中 DOM 节点跨层级的移动操作特别少,可以忽略不计。(tree diff)一种忽略跨层的先设前提,牺牲一些开发自由度来获取算法的高效性。**开发建议:**保持稳定的 DOM 结构会有助于性能的提升。

2020-07-13 20:38:23 165

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除