前提条件
默认绑定、非严格模式
看代码
function foo() {
var a = 2;
this.bar();
}
function bar() {
console.log(this.a);
}
foo();
输出结果
ReferenceError: a is not defined
问题:
-
this 是在生成执行上下文时产生的
这句话是否正确? - 每执行一个函数创建一个执行上下文,那如下代码,执行
obj.foo()
时执行上下文是怎样的?
var a = 1;
var obj = {
a: 2,
foo: foo
}
function foo() {
console.log(this.a);
}
obj.foo(); // 2
this 是在生成执行上下文时产生的
这句话是否正确?正确 (但箭头函数不是这样)
obj.foo()
时执行上下文是怎样的?可以简单的理解为
foo: foo 只是赋值;this 是函数执行是由谁调用,它就指向谁