5.这段代码中的 this 是多少?

67 阅读1分钟

5.这段代码中的 this 是多少?

把判断依据背下来才能全对

var length = 4;
function callback() {
  console.log(this.length); // => 打印出什么?
}
​
const obj = {
  length: 5,
  method(callback) {
    callback();
  }
};
​
obj.method(callback, 1, 2);

this是call的第一个参数。

f1() 等价 f1.call(undefined)
f1('hi') 等价 f1.call(undefined, 'hi') // 正常
// this在浏览器的环境下会被转成window,node的环境下会被转成global/undefined

函数和对象是没有关系的,对象里面只是存了一个地址

obj.child.say() 相当于f.call(obj.child),假设f是函数的名字

总结转换代码,要背,这是没有new的情况

f(p) => f.call(undefined, p)
o.c.f(p) => f.call(o.c, p)

浏览器加入'use strict',就不会瞎改。改成window

相关链接