自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 V8执行过程

一、V8执行流程 1. 字符格式转换 2. Scanner扫描代码 词法分析 语法分析 3. Parser 和preParser 解析和预解析,生成抽象语法树AST(preParser中如果变量定义后未使用 则不会生成AST,但会创建无变量引用和声明的scope); 4. Ignition V8的解释器,将AST转化为字节码 5. TurboFan V8编译器模块 转化未汇编代码; 6. 堆栈执行过程 二、堆栈执行 1. 准备JS环境准备 2. 执行环境栈(ECStack 执.

2022-04-23 20:40:05 527

原创 笔记-20220405-miniVue实现

Vue简单实现 Vue 类图 class Vue 属性 $options $data $el 方法 _proxyData() class Observer 属性 方法 walk() defineReactive() class Compiler 属性 el vm 方法 compile() compileElement() compileText() isDirective() isTextNode() isElementNode() …编译指令对应的

2022-04-05 17:36:10 168

原创 笔记-20220330-vuerouter简单实现

vuerouter简单实现 路由 hash 和 history hash 模式基于锚点以及 onhashchange 事件 history 模式基于 html5 中的 history API 使用 history.pushState()和 history.replaceState()实现 但是 IE10 以后才支持 相较于 push 和 replace 两个方法 pushState 和 replaceState 不会向服务器请求,实现了客户端路由 node 中的 history 因为 vueCl

2022-03-30 20:02:44 1241

原创 杂项问题笔记

1. Array.prototype.reduce(); 2.Array.prototype.splice(), Array.prototype.slice(), String.prototype.split() 3.WeakMap

2022-03-16 14:11:55 1129

原创 笔记-22/03/12-代码常见优化

1. 循环添加事件 在这样循环添加事件的情况下是添加失败的 i会输出相同的值 for(var i = 0;i < len; i++){ button[i].onclick = function() { console.log(i) } } 实际上是因为闭包的原因,因为for循环只会申请一片空间进行使用,而function中的i引用了外部的i,在循环完成后i值为3,此时的函数如果触发那么函数上下文的AO中没有i这个值,就会向外部找,打个比方 在EC(G)中找到了i

2022-03-12 21:02:25 448

原创 学习笔记-ES2015--22-03-05(Symbol,for...of...,Iterator,generator,getter setter,ES2016,ES2017)

1.Symbol symbol是一种新基本类型;最主要的作用是定义独一无二的属性名,也可以借助这种特性,保护私有变量,因为外界无法生成一摸一样的symbol 所以访问不到 ; 如果想要复用这个Symbol 可以使用静态方法Symbol.for(value: string);全局会有注册表记录这个字符串与symbol的对应关系 所以如果传入的值非字符串 会被转化为字符串; Symbol属性无法被for.in和Object.keys() 等获取到,同样在js...

2022-03-05 17:37:57 658

原创 学习笔记-ES2015--22-03-04(Reflect,class,Map,Set)

1.Reflect Reflect 静态类(类似Math 不能被new实例化)Reflect的成员方法就是Proxy处理对象的默认实现; Proxy在实例化时 如果没有添加处理方法 如get set等,实际上等同与使用Reflect去处理对象; Reflect提供了一套用于操作对象的API 统一了对象的操作方式; 'name' in obj 判断对象中是否有这个属性 delete obj.name 删除对象某个属性, Object.keys() 取到对象的所有可枚举属性, // 在ES标..

2022-03-04 22:10:47 627

原创 学习笔记-ES2015--22-03-04(Object.assign,Proxy)

1.Object.assign(target, ...source) 在发送请求前的参数处理时,经常需要处理两个对象,将新值覆盖到旧值上,此时用assign就方便很多;可以传递多个source 将他们合到target中; Object.assign()方法用于将所有可枚举属性的值从一个或多个源对象分配到目标对象。它将返回目标对象。 该方法使用源对象的[[Get]]和目标对象的[[Set]],所以它会调用相关 getter 和 setter。因此,它分配属性,而不...

2022-03-04 15:32:28 814 1

空空如也

空空如也

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

TA关注的人

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