1.闭包是什么?
函数A里面包含一个函数B,函数B中引用函数A的变量,函数A的返回值是函数B。因此函数B 就是一个闭包。常用于循环中解决var定义函数的问题。
function A(){
let a = 1;
function B(){
console.log(a)
}
return B
}
2.this(call/apply)
call和apply都用于改变函数中this的指向,只是传参的方式不一样。除了第一个参数相同以外,call是传一个参数列表,而apply则是传一个参数数组。
bind也用于改变this的指向,只是这个方法最后会返回一个函数
3.原型链
每个函数都有一个prototype的属性, 除了function.prototype.bind(),该属性都指向原型,每个对象都有_proto_属性,指向了该对象构造函数的原型,其实这个属性指向了[[prototype]],只是[[prototype]]只存在于函数内部,我们并不能访问到,所以我们用_proto_来访问,对象可以通过_proto_来寻找不属于该对象的属性,_proto_将对象连接起来就组成了原型链。