mirror of
https://github.com/NohamR/knowledge-kit.git
synced 2026-05-24 20:00:37 +00:00
docs: 批量博文
This commit is contained in:
58
Chapter2 - Web FrontEnd/2.33.md
Normal file
58
Chapter2 - Web FrontEnd/2.33.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# ES6学习总结
|
||||
|
||||
## 闭包
|
||||
匿名函数保存的是引用。看看下面代码例子
|
||||
|
||||
```javascript
|
||||
var array = new Array();
|
||||
// 实验1:
|
||||
for (var index = 0;index < 3; index++) {
|
||||
array.push(function(){
|
||||
console.log(index)
|
||||
})
|
||||
}
|
||||
array[1]() // 输出2
|
||||
|
||||
// 实验2
|
||||
for (var index = 0; index < 3; index++) {
|
||||
(function (n) {
|
||||
array.push(function(){
|
||||
console.log(n);
|
||||
})
|
||||
})(index)
|
||||
}
|
||||
array[1]() // 输出1
|
||||
```
|
||||
|
||||
### 闭包与内存泄漏
|
||||
|
||||
js 内存控制主要是通过计数器。当某个对象 A 引用对象 B,那么 B 的计数器加1,若 A 释放掉了,那么 A 引用对于 B 的计数器将变为 0。若 B 的所有计数器变为0的时候,那么 B 将会被释放。引用循环将会造成内存泄漏,什么是引用循环?A 引用 B,B 引用 A,会造成引用循环,内存泄漏
|
||||
|
||||
正是因为闭包的这个特点,我们可以将闭包应用在某些场合。
|
||||
|
||||
|
||||
### 闭包应用场合
|
||||
|
||||
- 封装
|
||||
```javascript
|
||||
var Person = function () {
|
||||
var name = "LBP";
|
||||
return {
|
||||
getName () {
|
||||
return 'I am ' + name;
|
||||
},
|
||||
setName (newName) {
|
||||
name = newName;
|
||||
}
|
||||
}
|
||||
}();
|
||||
|
||||
console.log(Person.name);
|
||||
console.log(Person.getName());
|
||||
Person.name = "杭城小刘";
|
||||
Person.setName('杭城小刘');
|
||||
console.log(Person.getName());
|
||||
```
|
||||
|
||||
-
|
||||
|
||||
Reference in New Issue
Block a user