闭包
-
什么是闭包
函数嵌套函数,且内部函数能够访问外部函数的变量就称之为闭包
(function(){
var a = 1;
function fn() {
var b = 2;
var sum = b + a;
console.log(sum);
}
fn();
})()
– fn函数调用了外部函数中的变量a
-
闭包的作用,
闭包最大的作用是隐藏变量,闭包的一大特性就是内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回之后,基于此特性 javaScript 就可以实现私有变量的存在 -
闭包的优
可以隔绝作用域,不会造成变量的全局污染 -
缺点
闭包长期驻留内存,导致的内存泄漏
解决方案:将暴露在外的闭包变量重置为null
原型链
在我们调用对象的一个方法或是属性时,首先会在对象实例上查找该方法,如果有则调用,若没有则会用去对象的proto(原型)上查找,如果找到则执行调用,若没有就会去创建对象的原型上查找,也就是对象的prototype上查找,如果找到则执行调用,否则会继续向prototype.proto中查找,若还没有就去prototype.proto.prototype中查找,直到查询到null 也就是原型链的顶端
- proto:
显式原型 - prototype:
隐式原型 当对象作为构造函数使用时,它就会作为新构造的函数的proto使用