前端面经(2)

1.响应式原理(Vue的原理)

1)new vue()之后,将data数据传到observer对象中,使用Object.defineProperty监听数据,监听他们的get和set,给data里面每一个属性都创建一个dep对象,这个对象里面有subs,当有多个标签使用该数据时,就有多个watcher,将这些watcher构成一个数组放入到subs中

2)将el模板传到compile对象中,对其进行解析,初始化view,展示视图

3)当数据发生更新时,该属性的dep对象会调用notify方法,通过subs,遍历subs中每一个watcher,watcher调用update方法,从而更新视图。

2.async和promise的区别:

1)async/await是基于promise实现的

2)async的返回值是一个promise对象

3)async中的try catch对应promise.catch

4) await对应promise.then

5)async更符合同步化语义,使得异步代码更像同步代码。

3.前端模块化(AMD、CMD、commonJS、ES6模块化)

commonJS用于服务器端编程,AMD采用异步的方式加载浏览器端模块,CMD推崇依赖就近,而AMD推崇依赖前置,ES6模块化在编译的时候就能确定模块间的依赖关系,确认输入输出的变量,而commonJS和CMD在运行的时候才能确定。

4.垃圾回收机制(自动内存管理机制)

概念:定期将不再使用的变量所占用的内存释放掉。f否则会造成内存泄漏。(指的是程序运行中动态分配的堆内存,如果没有得到释放,会造成系统内存的浪费,导致程序运行速度减慢,系统崩溃等后果)

垃圾回收机制的方法

1)标记清除:当代码执行在一个环境中时,在声明一个变量时,就对其进行标记,当代码执行在下一个环境时,当垃圾回收时,会根据标记将不再使用的变量的内存释放掉。

2)引用计数:在声明一个变量时,将引用类型赋值给这个变量,那么就将这个值的引用次数加1,如果这个变量的值遍历,则这个值的引用次数减1,如果引用次数为0的话,那么就会对其进行回收,将这个值所占的内存释放掉。

释放内存的方法:

1)堆内存:若要销毁堆内存,那么将引用该堆内存的对象或者函数赋值为null,如果没有任何东西引用的话,等浏览器空闲的时候,会将其销毁。

2)栈内存:

全局作用域:当页面关闭的时候全局作用域就销毁了

私有作用域:当私有作用域中的代码都执行完成后,私有作用域自动销毁,如果被作用域以外的东西占用了,那么就不能销毁了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值