面向对象闭包

面向对象
备份指针

// this在事件指令中指向事件源

// that称为备份指针

var that = this;

面向对象三大特性
封装

继承

多态

面向对象的使用
容错处理

var option = option || {};

闭包
当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。

function A(){
function B(){
console.log("Hello XMG!");
}
return B;
}
var b = A();
b();//Hello XMG!
技法最大目的: 全局变量私有化

闭包的最大用处有两个:

可以读取函数内部的变量

让这些变量的值始终保持在内存中。

所有的全局变量都是Windows属性. 所以可以文件各个地方拿到

!!!在函数内部的变量前面没有var用来声明就代表是全局变量

函数嵌套的变量取值采用就近原则 :

变量的查找过程(查找过程只能从内部向外)

先在现作用域中查找(遍历)

去父级-> 祖父级作用域查找

直到找到全局变量(Window属性)后还木有找到就报错

缺点: 类似于递归, 浪费性能. 所以建议尽量不要使用全局变量

引入闭包 : 用于保存局部变量. 但是不能乱用, 过多容易导致内存泄漏.

闭包的技术优点:
不污染全局空间!

内部所有的临时变量执行完毕都会释放不占内存。

可以保存全局数据。

更新复杂变量。

你可能感兴趣的:(面向对象闭包)