1、说一下new关键字的四个工作流程?
答:(new也问?你tm是不是在怀疑我的专业水平......)
- 1.创建一个空对象
- 2.this指向这个对象
- 3.对象赋值
- 4.返回这个对象
2、js语言是通过什么技术实现面向对象继承的
答:原型链(不假思索)
3、(追问)那你知道原型链的终点是什么吗?
答:null
4、很好(清了清嗓子),接下来说一下this的指向吧,尽量简洁
答:(今天的面试题都这么简单吗)谁调用this,this就指向谁
5、讲一下构造函数、原型对象、实例对象三者关系
答:(emmm,还好这个还记得)
- 构造函数有一个属性prototype,指向自己的原型对象
- 实例对象有一个属性__proto__指向自己的原型对象
- 原型对象有一个属性constructor,指向自己的构造函数
6、现在讲一下闭包是什么意思以及它的作用
答:是有权访问其他函数内部作用域中变量的函数与其访问变量的组合,作用是避免变量污染
7、请讲的再通俗一些
答:简单来说就是一个用了其他函数里变量的函数和它用的那个变量在一起就叫闭包
8、for-in与for-of区别
答:1.功能不同
-
for-in是遍历数组的下标
-
for-of是遍历数组的元素
2.原型的属性
-
for-in会遍历原型的属性
-
for-of不会遍历原型的属性
3.数据类型
-
for-in可以遍历Object类型
-
for-of不可以遍历Object类型
9、简明阐述一下 call、apply、bind区别
答:传参方式不同: call用于单个参数,apply用于多个参数
执行机制不同: call与apply会立即执行, bind不会立即执行
总结学习,仅供参考,轻喷(狗头)