下面这个例子会产生闭包
function add(x) {
return function _add(y){
return x + y
}
}
var sum = add(2)(3)
将断点打到 var sum = add(2)(3) 这里
- Brealpoints 表示当前打的断点是什么
- CallStack 表示当前函数调用栈
- Scope 表示当前作用域
- Scope 里面的 Local 表示当前活动对象
- Scope 里面的 Closure 表示闭包
有时候调试会发现没有这个 Closure 属性,例如下面这个例子
const obj = { name: '我是需要被绑定改变this指向的对象' }
function fn()
Function.prototype.bind = function (sbbbbb) {
const bind = Symbol();
sbbbbb[bind] = this
return function () {
sbbbbb[bind]();
}
}
fn.bind(obj);
这个例子是 bind 改变 this 指向的实现方式,将断点打向 fn.bind(obj) 接着看动态图
评论 (0)