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()
- 筛选数组: