- 请说说你对面向对象的理解?
面向对象是一种注重结果的思维方式
面向对象 : 封装、继承
- 原型对象是来解决什么问题的?
内存浪费 + 变量污染
- 请简述原型对象、构造函数、实例对象三者之间的关系(三个属性)
构造函数: prototype指向原型对象
原型对象 : constructor指向构造函数
实例对象: __proto__指向原型对象
- js是通过什么来实现面向对象继承的?
原型链
- 请说说什么是静态成员,什么是实例成员。
静态成员: 函数自己的成员
实例成员: 实例对象的成员
- 请说说你对js中this指向的理解。
谁调用我,我就指向谁
函数名() :指向window
对象名.方法名() : 指向对象
new 函数名() : 函数创建的实例
- 请说说call apply bind的区别及对应应用场景(面试必问点)
传参方式不同 : call是单个传参,apply是数组、伪数组传参
执行机制不同 : call和aplly会立即执行, bind不会立即执行而是得到一个修改this的新函数
- 请说说闭包是什么
闭包 是 一个可以访问其他函数内部变量的函数
函数 + 上下文引用
- 请说说闭包是干什么用的
解决变量污染
- 请说说什么是递归函数
递归函数是一个在函数内部调用自己的函数
- 请说说递归函数的应用场景
浅拷贝和深拷贝
遍历dom树
- 请说说数组几个常用的迭代方法(遍历方法)
筛选数组:arr.filtre()
检测是否所有元素满足条件(开关法) : arr.every()
遍历数组 : arr.forEach()
数组叠加(求累加和) : arr.raduce()