js高级中的常见问题 _____

142 阅读2分钟

1.请说说你对面向对象的理解 。

面向对象本质是一种注重结果的思维方式,也是对面向过程的封装。

  • 原型对象是来解决什么问题的?

    • 内存浪费 + 变量污染
  • 请简述原型对象、构造函数、实例对象三者之间的关系(三个属性)

    • 构造函数: prototype指向原型对象
    • 原型对象 : constructor指向构造函数
    • 实例对象: __proto__指向原型对象
  • js是通过什么来实现面向对象继承的?

    • 原型链
  • 请说说什么是静态成员,什么是实例成员。

    • 静态成员: 函数自己的成员
    • 实例成员: 实例对象的成员
  • 请说说你对js中this指向的理解。

    • 调用我,我就指向谁
    • 函数名() : 指向window
    • 对象名.方法名() : 对象
    • new 函数名() : new创建的实例
  • 请说说call apply bind的区别及对应应用场景(面试必问点)

    • 传参方式不同 : call是单个传参,apply是数组、伪数组传参
    • 执行机制不同 : call和aplly会立即执行, bind不会立即执行而是得到一个修改this的新函数
  • 请说说闭包是什么

    • 闭包 是 一个 可以访问其他函数内部变量函数

      • 函数 + 上下文引用
  • 请说说闭包是干什么用的(高薪资必问点)

    • 解决变量污染
  • 请说说什么是递归函数

    • 递归函数 是一个 在函数内部调用自己函数
  • 请说说递归函数的应用场景(高薪资必问点)

    • 浅拷贝和深拷贝
    • 遍历dom树
  • 请说说数组几个常用的迭代方法(遍历方法)

    • 筛选数组: arr.filter()
    • 检测是否所有元素满足条件(开关法) : arr.every()
    • 遍历数组 : arr.forEach()
    • 数组叠加(求累加和) : arr.reduce()