编程:从入门到放弃
    前言
    语言和环境
    +=
    C和C++
    Hex
    Map
    Scope(1):"这"是啥
    Scope(2)
    Singleton
    什么顺序
    从A到Z
    函数
    切分字符串
    初始化(1)
    初始化(2)
    单引号,还是双引号
    参数传递
    左,还是右
    引用
    时间(1)
    时间(2)
    时间(3)
    时间(4)
    时间(5)
    比大小
    流氓甘地
    相等,还是不等(1)
    相等,还是不等(2)
    相等,还是不等(3)
    相等,还是不等(4)
    第一个说了算,还是最后一个
    语言和环境
    除以0
    随机数

Scope(1):"这"是啥

Updated: 2021-12-12

放弃?

设全局变量的时候xthis.x是一样的

> x = 10
10
> this.x
10
> this.x = 1
1
> x
1

我们创建一个module如下

> module = { x: 100, getX: function() { return this.x; } }
{ x: 100, getX: [Function: getX] }
> module.getX();
100

然后创建getX2()函数让它和module.getX()相同

> getX2 = module.getX;
[Function: getX]

但结果却完全不同:

> getX2();
1

进阶!

getX2()虽然和module.getX()一样,但其中的this却代表的是全局。

为了保证他们有同样的 scope,可以使用bind(),这样this将被设为第一个参数的 scope。

> getX3 = getX2.bind(module);
[Function: bound getX]
> getX3();
100