function A() {
return function B() {
return this;
};
}

A = {
B: function B() {
return this;
}
};
为什么this
返回窗口对象中的B()
而不是function A()
对象? JS中的函数是一个对象,为什么它在第二个代码示例中显示的行为不同?
答案 0 :(得分:2)
您的函数B
刚刚在函数A
中声明,除了作用域之外,它没有其他函数A
。每个函数都有自己的this
引用的上下文。默认情况下(表示没有显式/隐式绑定,没有对象)this
引用window
模式下的non strict
对象和undefined
模式下的strict
。
非严格模式
function A() {
return this;
}
console.log(A());
严格模式
'use strict';
function A() {
return this;
}
console.log(A());
明确绑定
'use strict';
const obj = { name: 'Object' };
function A() {
return this;
}
console.log(A.call(obj));
对象绑定
const obj = {
name: 'Object',
A() {
return this;
}
}
console.log(obj.A());