没有合适的资源?快使用搜索试试~ 我知道了~
Vue面试题第二部分整理内容包括: 1.变量的提升 2.bind、call、apply区别 3.如何实现一个bind函数 4.如何实现一个call函数 5.如何实现一个apply函数 6.简单说下原型链 7.怎么判断对象类型 8.箭头函数的特点 9.This 10.async、await优缺点 11.generator原理 12.Promise 13.如何实现一个Promise 14.==与===的区别 15.基本数据类型和引用类型在存储上的差别 16.浏览器Eventloop和Node中有什么区别 17.setTimeout倒计时误差 18.数组降维 19.深拷贝 20.typeof与instanceof区别 21.cookie、localstorage、session、indexDB区别 22.如何解决跨域 23.什么是事件代理 24.Babel原理 25.如何实现一个插件 等
资源推荐
资源详情
资源评论
2020/4/18
进阶篇 | FE-Interview
blog.poetries.top/FE-Interview-Questions/improve/#_1-优化打包速度
1/27
进
阶
篇
⼀
、
J
S
1
谈谈
变
量
提
升
当
执
⾏
JS
代
码
时
,
会
⽣
成执
⾏
环
境
,
只
要
代
码
不
是
写
在
函
数
中
的
,
就
是
在
全
局
执
⾏
环
境
中
,
函
数
中
的
代
码
会产
⽣
函
数
执
⾏
环
境
,
只
此
两
种
执
⾏
环
境
。
想
必
以
上
的
输
出
⼤
家
肯
定
都
已
经
明
⽩
了
,
这
是
因
为
函
数
和变
量
提
升
的
原
因
。
通
常
提
升
的
解
释
是
说
将
声
明
的
代
码
移
动到
了
顶
部
,
这
其
实
没
有
什么
错
误
,
便于
⼤
家
理
解
。
但
是更
准
确的
解
释
应
该
是
:
在
⽣
成执
⾏
环
境
时
,
会
有
两个
阶
段
。
第
⼀
个
阶
段
是
创
建
的
阶
段
,
JS
解
释
器
会
找
出
需
要
提
升
的
变
量
和
函
数
,
并
且
给
他们
提
前
在
内
存
中
开
辟
好
空
间
,
函
数
的
话
会
将
整
个
函
数
存
⼊内
存
中
,
变
量
只
声
明
并
且
赋
值
为
undefined
,
所
以
在
第
⼆
个
阶
段
,
也
就
是
代
码
执
⾏
阶
段
,
我
们
可
以
直
接提
前
使
⽤
在
提
升
的
过
程
中
,
相
同
的
函
数
会
覆
盖
上⼀个
函
数
,
并
且
函
数
优
先
于
变
量
提
升
b() // call b
console.log(a) // undefined
var a = 'Hello world'
function b() {
console.log('call b')
}
b() // call b second
function b() {
console.log('call b fist')
}
function b() {
j
s
j
s
FE
-
I
n
t
e
rv
ie
w
2020/4/18
进阶篇 | FE-Interview
blog.poetries.top/FE-Interview-Questions/improve/#_1-优化打包速度
2/27
var
会产
⽣
很
多
错
误
,
所
以
在
E
S
6
中
引
⼊
了
let
。
let
不
能
在
声
明
前
使
⽤
,
但
是
这
并
不
是
常
说
的
let
不
会
提
升
,
let
提
升
了
,
在
第
⼀
阶
段
内
存
也
已
经
为他
开
辟
好
了
空
间
,
但
是
因
为
这
个
声
明
的
特
性
导
致
了
并
不
能
在
声
明
前
使
⽤
2
bind
、
call
、
a
pp
l
y
区
别
call
和
apply
都
是
为了
解
决
改
变
this
的
指
向
。
作
⽤
都
是
相
同
的
,
只
是
传
参
的
⽅
式
不
同
。
除
了
第
⼀个
参
数
外
,
call
可
以
接收
⼀个
参
数
列
表
,
apply
只
接
受
⼀个
参
数数
组
bind
和
其
他
两个
⽅
法
作
⽤
也
是
⼀
致
的
,
只
是
该
⽅
法
会
返
回
⼀个
函
数
。
并
且
我
们
可
以
通过
bind
实
现
柯
⾥
化
3
如
何
实
现
⼀个
bind
函
数
对
于
实
现
以
下
⼏
个
函
数
,
可
以从
⼏
个
⽅
⾯
思
考
不
传
⼊
第
⼀个
参
数
,
那
么
默
认
为
window
改
变
了
this
指
向
,
让
新
的
对
象
可
以
执
⾏该
函
数
。
那
么
思
路
是
否可
以
变
成
给
新
的
对
象
添
加
⼀个
函
数
,
然
后
在
执
⾏
完
以
后
删
除
?
console.log('call b second')
}
var b = 'Hello world'
let a = {
value: 1
}
function getValue(name, age) {
console.log(name)
console.log(age)
console.log(this.value)
}
getValue.call(a, 'yck', '24')
getValue.apply(a, ['yck', '24'])
j
s
FE
-
I
n
t
e
rv
ie
w
2020/4/18
进阶篇 | FE-Interview
blog.poetries.top/FE-Interview-Questions/improve/#_1-优化打包速度
3/27
4
如
何
实
现
⼀个
call
函
数
5
如
何
实
现
⼀个
a
pp
l
y
函
数
Function.prototype.myBind = function (context) {
if (typeof this !== 'function') {
throw new TypeError('Error')
}
var _this = this
var args = [...arguments].slice(1)
//
返
回
⼀个
函
数
return function F() {
//
因
为
返
回
了
⼀个
函
数
,
我
们
可
以
new F()
,
所
以
需
要
判
断
if (this instanceof F) {
return new _this(...args, ...arguments)
}
return _this.apply(context, args.concat(...arguments))
}
}
Function.prototype.myCall = function (context) {
var context = context || window
//
给
context
添
加
⼀个
属
性
// getValue.call(a, 'yck', '24') => a.fn = getValue
context.fn = this
//
将
context
后
⾯
的
参
数
取
出
来
var args = [...arguments].slice(1)
// getValue.call(a, 'yck', '24') => a.fn('yck', '24')
var result = context.fn(...args)
//
删
除
fn
delete context.fn
return result
}
Function.prototype.myApply = function (context) {
var context = context || window
context.fn = this
var result
//
需
要
判
断
是
否
存
储
第
⼆
个
参
数
//
如
果
存
在
,
就将
第
⼆
个
参
数
展
开
if (arguments[1]) {
j
s
j
s
j
s
FE
-
I
n
t
e
rv
ie
w
2020/4/18
进阶篇 | FE-Interview
blog.poetries.top/FE-Interview-Questions/improve/#_1-优化打包速度
4/27
6
简
单
说
下
原
型
链
?
每
个
函
数
都
有
prototype
属
性
,
除
了
Function.prototype.bind()
,
该
属
性
指
向原
型
。
每
个
对
象
都
有
__proto__
属
性
,
指
向
了
创
建
该
对
象
的
构
造
函
数
的
原
型
。
其
实
这
个
属
性
指
向
了
[[prototype]]
,
但
是
[[prototype]]
是
内
部
属
性
,
我
们
并
不
能
访
问
到
,
所
以使
⽤
_proto_
来
访
问
。
对
象
可
以
通过
__proto__
来
寻
找
不
属
于
该
对
象
的
属
性
,
__proto__
将对
象
连
接
起
来
组
成
了
原
型
链
。
7
怎
么
判
断
对
象
类
型
可
以
通过
Object.prototype.toString.call(xx)
。
这
样
我
们
就
可
以
获
得
类
似
[object
Type]
的
字
符
串
。
instanceof
可
以
正
确的
判
断
对
象
的
类
型
,
因
为
内
部
机
制
是
通过
判
断
对
象
的
原
型
链
中
是
不
是
能
找
到
类
型
的
prototype
8
箭
头
函
数
的
特点
result = context.fn(...arguments[1])
} else {
result = context.fn()
}
delete context.fn
return result
}
function a() {
return () => {
return () => {
console.log(this)
}
}
}
console.log(a()()())
j
s
FE
-
I
n
t
e
rv
ie
w
2020/4/18
进阶篇 | FE-Interview
blog.poetries.top/FE-Interview-Questions/improve/#_1-优化打包速度
5/27
箭
头
函
数
其
实
是
没
有
this
的
,
这
个
函
数
中
的
this
只取
决
于他
外
⾯
的
第
⼀
个不
是
箭
头
函
数
的
函
数
的
this
。
在
这
个
例
⼦
中
,
因
为
调
⽤
a
符
合
前
⾯
代
码
中
的
第
⼀个
情
况
,
所
以
this
是
window
。
并
且
this
⼀
旦
绑
定
了
上下
⽂
,
就
不
会
被
任何代
码
改
变
9
T
hi
s
10
a
sy
nc
、
a
w
ai
t
优
缺
点
async
和
await
相
⽐
直
接
使
⽤
Promise
来
说
,
优
势
在
于
处
理
t
hen
的
调
⽤
链
,
能
够
更
清
晰
准
确的
写出
代
码
。
缺
点
在
于
滥
⽤
await
可
能
会
导
致
性
能
问
题
,
因
为
await
会
阻
塞
代
码
,
也
许
之
后
的
异
步
代
码
并
不
依
赖
于
前
者
,
但仍
然
需
要
等
待
前
者
完
成
,
导
致
代
码
失
去
了
并
发
性
下
⾯
来
看
⼀个
使
⽤
await
的
代
码
。
function foo() {
console.log(this.a)
}
var a = 1
foo()
var obj = {
a: 2,
foo: foo
}
obj.foo()
//
以
上两
者
情
况
`this`
只
依
赖
于
调
⽤
函
数
前
的
对
象
,
优
先
级
是
第
⼆
个
情
况
⼤
于
第
⼀个
情
况
//
以
下
情
况
是
优
先
级
最
⾼
的
,
`this`
只
会
绑
定
在
`c`
上,不
会
被
任何
⽅
式
修
改
`this`
指
向
var c = new foo()
c.a = 3
console.log(c.a)
//
还
有
种
就
是
利
⽤
call
,
apply
,
bind
改
变
this
,
这
个
优
先
级
仅
次
于
new
j
s
FE
-
I
n
t
e
rv
ie
w
剩余26页未读,继续阅读
资源评论
博主逸尘
- 粉丝: 6736
- 资源: 26
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于python的高性能爬虫程序,使用了多线程+缓存+xpath实现的,这里以彼-岸图库为例,实现,仅用于学习交流
- 中分辨率成像光谱仪(MODIS)烧毁面积产品信息MODIS-C6-BA-User-Guide-1.2.pdf
- Screenshot_20240427_172613_com.huawei.browser.jpg
- 关于学习Python的相关资源网站链接及相关介绍.docx
- (HAL库)基于STM32F103C8T6的温控PID系统[Dht11、ESP8266、无线透传、L298N……]
- VoLTE高丢包优化指导书.xlsx
- Rust资源文件.zip
- 前后端分离实践:使用 React 和 Express 搭建完整登录注册流程
- gradle-publish-to-MavenLocal.zip
- 10份网络优化创新案例.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功