javaScript面试复习

401 阅读2分钟

一、==和===的区别是什么

==是抽象相等运算符,而===是严格相等运算符
==运算符是在进行必要的类型转换后,再比较。
===运算符不会进行类型转换,所以如果两个值不是相同的类型,会直接返回false

二、判断变量类型

1.typeof()用来判断简单的数据;
2.判断变量是对象还是数组用instanceof(可以正确判断对象的类型),
constructor或者object.prototupe.toString.call()

三、闭包

闭包:有权访问另一个作用域中变量的函数
特性:可实现函数外访问函数

闭包的应用场景
ajax请求成功的回调
一个事件绑定的回调方法
setTimeout的延时回调
一个函数内部返回另一个匿名函数

闭包的优缺点
优点:让代码更加规范、简洁
缺点:使用闭包过多,内存消耗大,造成内存的泄露

四、原型和原型链

每个对象都会在其内部初始化一个属性,就是prototype(原型),
当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,
那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,
于是就这样一直找下去,也就是我们平时所说的原型链的概念。

每个对象有一个私有属性,记作[[prototype]],属性又有自己的prototype,形成了原型链

五、深拷贝和浅拷贝

浅拷贝:创建一个新对象,将原对象的属性值赋值给新对象; object.assign,展开符
深拷贝:拷贝一个对象的全部属性,拷贝完成之后,两个对象相互不影响 json.parse

使用json拷贝的缺点:
1.会忽略undefined
2.会忽略Symbol
3.不能序列化函数
4.不能拷贝循环引用对象
5.不能正确调用new Date()
6.不能处理正则

六、js的基本数据类型

undefined,Null,Boolean,Number,String,Symbol,

七、谈谈对this对象的理解

his总是指向函数的直接调用者(而非间接调用者);如果有new关键字,this指向new出来的那个对象;
在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window。

八、javascript如何实现继承?

(1)构造继承
(2)原型继承
(3)实例继承
(4)拷贝继承