关于 this

仅有几点需要注意的

call、 apply 与 bind 方法

第一个参数的特殊情况:

  • 如果第一个参数为空、null 或者 undefined,则默认传入全局对象;
  • 如果第一个参数为原始类型值,那么这个原始值会自动转成对应的包装对象,然后再传入。
var f = function () {
    console.log(this);
};

f.call(2);
// Number {[[PrimitiveValue]]: 2}
f.apply(2);
// Number {[[PrimitiveValue]]: 2}
f.bind(2)();
// Number {[[PrimitiveValue]]: 2}
1
2
3
4
5
6
7
8
9
10