cat-note/bottleofcat

闭包其实就是一个结构体

Opened this issue · 1 comments

看到了这个
其实闭包可以用结构体来模拟,很多语言也是怎么做的,比如如下闭包:

let a = () => 1 + 2;
print(a());

展开为:

class A {
  function call() {
    return 1 + 2;
  }
}

let a = new A;
print(a.call());

那么如果要捕获作用域里的变量呢?

let cat = 114513;
let a = () => 1 + cat;
print(a());

展开为:

class A {
  var _cat;

  A(cat) {
    this._cat = cat
  }

  function call() {
    return 1 + this._cat;
  }
}

let cat = 114513;
let a = new A(cat);
print(a.call());

相信已经懂了吧,要传入参数也是一样。

tql橘子