JS面试题

发布时间 2023-08-21 13:05:06作者: 饼MIN

事件委托

  • 事件委托本质上是利用了浏览器事件冒泡的机制。因为事件在冒泡过程中会传递到父节点;因此可以把子节点的监听函数定义在父节点上(这样父节点就是绑定事件的节点),父节点可以通过事件对象获取目标节点(就是触发事件的节点),由父节点的监听函数统一处理多个子元素的事件,这种方式就是事件委托。
  • 使用事件委托可以不必为每一个子元素都绑定一个监听事件,这样减少了内存上的消耗,此外,使用事件委托还可以实现事件的动态绑定,比如说新增一个子节点,并不需要为它添加一个监听事件,事件委托会直接交给父元素的监听函数来处理。

原型

  • 在JS中,每个对象都有一个原型,原型是一个对象,它包含了共享的属性和方法,可以被其他对象继承和访问。
  • 当你访问一个对象的属性和方法时,如果该对象自身没有这个属性或方法,JS会去它的原型链上查找,原型链是一个连接对象和原型的链式结构,每个对象都有一个隐式指向其原型的链接

promise

  • promise是异步编程的一种解决方案,本质上是一个构造函数,new一个promise对象用来封装一个异步操作可以获取其成功或失败的值,promise实例被创建后回调函数会立即执行。
  • promise有三种状态:pending(等待中)、fulfilled(成功的)、rejected(失败的) 状态一旦改变就不会再变。
  • promise的.then()和.catch()操作都能返回一个Promise对象
  • promise可以实现在异步操作执行完后,用链式调用的方式执行回调函数从而解决回调地狱的问题;promise可以支持多个并发的请求,获取并发请求的数据。promise可以解决异步的问题,本身不能说 promise 是异步的
  • promise.all()方法
  • promise.race()方法