2022实战系列-6月9号第三场

115 阅读2分钟

面试了许多求职者,很多求职者只知其然,而不知所以然,写此文章为广大前端小伙伴指引迷津。纯干货!纯干货!纯干货!

目录

第一场

new 发生了什么

用new操作符创建对象发生的事情:

  • 创建一个新对象;
  • 将构造函数的作用域赋给这个对象(因此this就指向了这个对象);
  • 执行构造函数中的代码(为这个对象添加属性和方法,以及执行构造函数中其他的代码);
  • 把这个新对象返回;
    注意:原本的构造函数是window对象的方法,如果不用new操作符而直接调用,那么构造函数的执行对象就 是window,即this指向了window。现在用new操作符后,this就指向了新生成的对象。理解这一步至关重要。
// 创建构造函数
function Person(name,age){
this.name = name;
this.age = age;
}
// 定义自己实现的类似new方法,
function create(fn,...args){
let obj = {};
fn.call(obj,...args);
return obj;
}
// 使用自己定义的方法创建对象,第一参数是构造函数,相当于模板。从第二个参数起,为对象  的属性值。
let obj = create(Person,'张三',18);
console.log(obj)  // {name: "张三", age: 18}
闭包实现柯里化

答:闭包 + 递归。闭包:延迟处理

let arr = []
function addCurry() {
 let arg = Array.prototype.slice.call(arguments); // 递归获取后续参数
 arr = arr.concat(arg);
  if (arg.length === 0) { // 如果参数为空,则判断递归结束
      return arr.reduce((a,b)=>{return a+b}) // 求和
  } else {
      return addCurry;
  }
}

addCurry(1)(2)(3)()
ts 装饰器

现在就是,假设我们有一个类,然后呢,要对它额外进行一些修饰,这个就是装饰器要干的事情了。

  • 装饰器本身就是一个函数
  • 装饰器接收的参数是构造函数
  • 装饰器通过 @ 符号来进行使用。

小白也是新手面试官,欢迎领导莅临指导工作,提出建议,小白不胜感激,不喜勿喷,点赞收藏随机送程序媛小姐姐一枚哦!!!