前端面试手写题目汇总

江文艺
  1. 手写new

  2. 创建一个空对象

  3. 连prototype

  4. 改变this指向

  5. 返回 看他在不在Object上

  6. setTimeout实现setInterval

  7. 每秒执行settimeout

  8. sleep()

  9. add

  10. 用array.from(argument) 将类数组对象转为数组

  11. 用push将其他项加进去,return新数组

  12. 数组求和,使用数组隐式转换

  • valueOf:数组运算,返回最适合该对象类型的原始值

  • toString:字符串运算,将该对象的原始值以字符串形式返回

  1. 深拷贝 浅拷贝

浅拷贝:

深拷贝:

判断返回类型是数组还是对象,克隆对象

  1. 手写apply call bind

相同:

  • call 和 apply 都是为了解决改变 this 的指向。作用都是相同的,只是传参的方式不同。

  • 他们第一个参数都是this的指向

区别:

  • apply 传入的是数组,返回原函数

  • call 传入的是参数列表,一次性传入,返回原函数

  • bind 传入也是参数列表,可以多次传入,返回新函数,并且我们可以通过 bind 实现柯里化,返回函数的拷贝值,但是带有绑定的上下文,它不会立即执行

  1. call

  2. apply

  3. bind:

https://juejin.im/post/6844903682455109640#heading-3

https://www.jianshu.com/p/db49179caca1

https://zhuanlan.zhihu.com/p/150721732

  1. 手写防抖和节流

https://juejin.cn/post/6844903669389885453

https://zhuanlan.zhihu.com/p/72923073

防抖:多少秒后执行一次

设置定时器,清除再设置1秒执行。

<!-- 防抖: 设置定时器,在几秒后改变函数的arguments(类数组对象),在执行前需要先clear清除定时器 -->

闭包

时间戳 闭包

节流:在规定时间内持续触发只会执行一次

<!-- 节流:在规定时间内持续触发只会执行一次,在防抖的基础上增加一个开关,通过一个开关,与定时器setTimeout结合完成 -->

设置标记,

  1. 手写实现repeat/复制字符串

  2. 手写实现trim/ 去除前后空格

  3. 手写实现instanceof

  4. 冒泡排序

比较相邻的两个数 小的放在前面

https://www.cnblogs.com/onepixel/articles/7674659.html

  1. 选择排序

遍历数组 然后选择一个最小数值标识位 放在最前面 依次排序

比较最小索引

  1. 手写promise

缺点: 一旦执行 不能更改

.then的链式调用

初始值pending

成功的值

失败的原因

一个存放成功的数组

一个存放失败的数组

当state的状态改变,resolve调用将状态转为成功并储存成功的值

阅读 25
1k 声望
66 粉丝
0 条评论
你知道吗?

1k 声望
66 粉丝
宣传栏