前端开发常见面试题前端开发常见面试题
常见面试题常见面试题
介绍js的基本数据类型、引用类型、特殊类型
基本数据类型基本数据类型:String、Number、Boolean、undefined、unll (新增Symbol)
引用类型引用类型 : function、Object
特殊类型特殊类型 :undefined、null
原型链是什么 ?
用new运算符加上函数的调用,调用的结果就是一个对象,new出来的这个对象我们称他为实例
prototype(原型)是一个指针指向了一个原型对象,这个对象里面存放所有的实例共享的属性和方法
实例的__proto__指向了构造函数的prototype,构造函数是object的实例,构造函数的prototype下的__proto__指向了object的
prototype 我们称他为原型链
javascript作用链域?
全局函数无法查看局部函数的内部细节,但局部函数可以查看其上层的函数细节,直至全局细节。
当需要从局部函数查找某一属性或方法时,如果当前作用域没有找到,就会上溯到上层作用域查找,
直至全局函数,这种组织形式就是作用域链。
谈谈This对象的理解。
1全局this指window
2事件对象里面的this指事件触发对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window
4.3自调用函数this指window
4.4对象方法里面的this指对象本身
4.5构造函数的this及构造函数原型方法里面的this都是指向将来new的实例对象
4.6没有归属的局部函数this指向window
4.7箭头函数没有自己的this
4.8 forEach,reduce,定时器里面的this都是指向window
改变this指向的方法
bind方法:在函数声明的时候改变this的指向
call方法:是在函数调用的时候改变this的指向(window,18,19,20)传参的方式不一样
apply方法: 是在函数调用的时候改变this的指向(window,[18,19,20])传一个数组
什么是闭包(closure),为什么要用它?
1.函数内再嵌套函数
2.内部函数可以引用外层的参数和变量
3.参数和变量不会被垃圾回收机制回收
new操作符具体干了什么呢?
1、创建一个空对象
2、将创建的对象的_proto_指向构造函数的prototype
3、改变了this的指向
4、返回了一个对象
function create(Con,...args) {
const obj = {}
obj._proto_ = Con.prototype
coonst result = Con.apply(obj,args)
return result instanceof object ? result : obj
评论0