在下面的代码片段中,为什么window.foo存在,但this.bar未定义?
function foo() {
function bar() { };
console.log(this.bar);
}
console.log(window.foo);
foo.call({});
答案 0 :(得分:-1)
在浏览器中,窗口是一个全局对象,因此它可以在任何地方使用,除非它被遮蔽。 this
仅指向被称为方法的函数体中有用的东西;在foo.bar()中 - bar
,this
为foo
,或者调用bar.call(...)或bar.apply(...)时this
的参数,或者当你完全在一个函数调用之外时,它指向全局对象(窗口)。
你明确地做了foo.call({}),它将它设置为一个空的Object。所以this.bar在那次通话中不存在。