You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
已知如下对象,请基于es6的proxy方法设计一个属性拦截读取操作的例子,要求实现去访问目标对象example中不存在的属性时,抛出错误:Property “$(property)” does not exist (2018 今日头条)
constman={name:'jscode',age:22}constproxy=newProxy(man,{get(target,property){//目标对象,访问的属性名returnpropertyintarget ? target[property] : 'default'//访问属性,判断是否存在该属性名},set(target,property,value){//代理目标对象,要写入的属性名称,写入的属性值if(!target[property]){//如果属性不存在,抛出错误thrownewTypeError(`Property “${property}” does not exist`)}target[property]=value}})proxy.name="jscode"proxy.age=22proxy.location=1
简答题
typescript和JavaScript区别
typescript有哪些类型
typescript中type和interface区别
分析async/await内部原理
async 函数返回一个 Promise 对象,当函数执行的时候,一旦遇到 await 就会先返回,等到触发的异步操作完成,再接着执行函数体内后面的语句
sync/await语法糖就是使用Generator函数+自动执行器来运作的
async/await如果右边方法执行出错怎么办
使用try...catch处理内部逻辑,期望出错后能够直接停止函数,需要在原函数内部加上错误处理机制
event loop处理过程?promise定义时传入的函数什么时候执行?
事件循环监听调用栈和消息队列,如果调用栈里的任务执行结束,事件循环会从消息队列中取出第一个回调函数,压入调用栈。
EventLoop中每次执行栈中的任务,每次执行栈中的任务执行完毕后都会去检查并执行事件队列里面的任务,而事件队列中的任务又分为微队列和宏队列。
在new操作时执行
防抖函数的应用场景,实现方式?
应用场景:
实现方式:
V8垃圾回收机制
新生代回收:
老生代:采用标记清除 + 标记整理 + 增量标记算法
performanceAPI中什么指标可以衡量首屏时间
EcmaScript新特性,暂时性死区有什么作用
ES6中let/const会在作用域中被提升,ES6 规定暂时性死区和let、const语句不出现变量提升,主要是为了减少运行时错误,防止在变量声明前就使用这个变量,从而导致意料之外的行为
观察者模式和发布订阅模式的区别标题
发布/订阅模式存在“信号中心”,某任务执行完成,向信号中心“发布”一个信号,其它任务可以向信号中心“订阅”这个信号,从而知道什么时候自己可以开始执行
观察者模式没有事件中心;并且发布者需要知道订阅者的存在
gulp构建流程
package-lock.json有什么作用,如果项目中没有它会怎么样,举例说明
作用:是将使用的库的版本锁定,如果下次再安装依然使用这些版本的库
举例:有些库更新后不兼容当前使用的场景:和别的库冲突、调用api变化、和当前开发环境不兼容
webpack常用配置有哪些,说明用途
entry:打包的入口文件,一个字符串或者一个对象
output:配置打包的结果,一个对象
fileName:定义输出文件名,一个字符串
path:定义输出文件路径,一个字符串
module:定义对模块的处理逻辑,一个对象
loaders:定义一系列的加载器,一个数组
webpack css-loader的作用和原理
默认不解析css文件,需要用适当的加载器loader去处理此类型资源文件,使得css文件转换成一个js模块
像 Browserify, 但是将应用打包为多个文件. 如果单页面应用有多个页面, 那么用户只从下载对应页面的代码. 当访问到另一个页面, 不需要重新下载通用的代码.
在很多地方能替代 Grunt 跟 Gulp 因为能够编译打包 CSS, 做 CSS 预处理, 编译 JS 方言, 打包图片, 还有其他一些.
它支持 AMD 跟 CommonJS, 以及其他一些模块系统, (Angular, ES6). 如果不知道用什么, 就用 CommonJS.
webpack中loader和plugin的区别是什么
对于loader,它是一个转换器,将A文件进行编译形成B文件,这里操作的是文件,单纯的文件转换过程
plugin是一个扩展器,它丰富了webpack本身,针对是loader结束后,webpack打包的整个过程,它并不直接操作文件,而是基于事件机制工作,会监听webpack打包过程中的某些节点,执行广泛的任务
webpack、rollup、parcel优劣
babel.config.js和.babelrc有什么区别
baberc 的加载规则是按目录加载的,是只针对自己的代码。config的配置针对了第三方的组件和自己的代码内容。babel.config.js 是一个项目级别的配置,一般有了babel.config.js 就不会在去执行.babelrc的设置
webpack中tree shaking的用途和原理是什么?
一个模块可能有多个⽅法,只要其中的某个⽅法使⽤到了,则整个⽂件都会被打到 bundle ⾥⾯去,tree shaking 就是只把⽤到的⽅法打⼊ bundle ,没⽤到的⽅法会在 uglify 阶段被擦除掉。
原理:利⽤ ES6 模块的特点:
eventbus原理,讲述eventbus在vue中的实践
EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式,称为发布订阅者模式。可以把eventBus当成一个管道,这个管道两端可以接好多组件,两端的任何一个组件都可以进行通信。其实这个管道就是Vue实例,实例中的$on, $off, $emit方法来实现此功能
vue-loader实现原理是什么
vue-loader是用于webpack的加载器,允许你用叫做Single-File Components单文件组件的格式来写Vue组件。
vue-loader不是简单的源转换器。它用自己专用的加载链(你可以认为每个块是虚拟的模块)处理SFC(Single-file Component 单文件组件)内部的每个语言块,最后将这些块组成最终的模块
The text was updated successfully, but these errors were encountered: