- 博客(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
425
原创 笔记-20220405-miniVue实现
Vue简单实现Vue类图classVue属性$options$data$el方法_proxyData()classObserver属性方法walk()defineReactive()classCompiler属性elvm方法compile()compileElement()compileText()isDirective()isTextNode()isElementNode()…编译指令对应的
2022-04-05 17:36:10
112
原创 笔记-20220330-vuerouter简单实现
vuerouter简单实现路由hash 和 historyhash 模式基于锚点以及 onhashchange 事件history 模式基于 html5 中的 history API使用 history.pushState()和 history.replaceState()实现 但是 IE10 以后才支持相较于 push 和 replace 两个方法 pushState 和 replaceState 不会向服务器请求,实现了客户端路由node 中的 history因为 vueCl
2022-03-30 20:02:44
1184
原创 杂项问题笔记
1. Array.prototype.reduce();2.Array.prototype.splice(), Array.prototype.slice(), String.prototype.split()3.WeakMap
2022-03-16 14:11:55
1066
原创 笔记-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
401
原创 学习笔记-ES2015--22-03-05(Symbol,for...of...,Iterator,generator,getter setter,ES2016,ES2017)
1.Symbolsymbol是一种新基本类型;最主要的作用是定义独一无二的属性名,也可以借助这种特性,保护私有变量,因为外界无法生成一摸一样的symbol 所以访问不到 ;如果想要复用这个Symbol 可以使用静态方法Symbol.for(value: string);全局会有注册表记录这个字符串与symbol的对应关系 所以如果传入的值非字符串 会被转化为字符串;Symbol属性无法被for.in和Object.keys() 等获取到,同样在js...
2022-03-05 17:37:57
595
原创 学习笔记-ES2015--22-03-04(Reflect,class,Map,Set)
1.ReflectReflect 静态类(类似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
580
原创 学习笔记-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
717
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人