闭包。官方对闭包的解释是:一个拥有很多变量和绑定了这些变量的环境的表达式(一般是一个函数),因而这些变量也是该表达式的一部分。
闭包的特点:
1. 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
2. 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
简单的说,Javascript同意使用内部函数---即函数定义和函数表达式位于还有一个函数的函数体内。并且。这些内部函数能够訪问它们所在的外部函数中声明的全部局部变量、參数和声明的其它内部函数。当当中一个这种内部函数在包括它们的外部函数之外被调用时,就会形成闭包。
在JS中一切都是对象。函数是对象的一种
在Javascript中每一个函数都有一个Portotype属性,而对象没有。加入两个方法,分别直接加入和加入打破Prototype上面,来看下调用情况。分析结果例如以下:
1、不使用prototype属性定义的对象方法,是静态方法。仅仅能直接用类名进行调用。另外,此静态方法中无法使用this变量来调用对象其它的属性。
2、使用prototype属性定义的对象方法,是非静态方法,仅仅有在实例化后才干使用!其方法内部能够this来引用对象自身中的其它属性。
通过使用闭包。我们能够做非常多事情。比方模拟面向对象的代码风格;更优雅,更简洁的表达出代码;在某些方面提升代码的运行效率。