有人可以一劳永逸地为我们所有人做好准备吗?
var parent = {child: function(){
console.log(this);
var log = function(){
console.log(this);};
log();
}
}
当我致电parent.child()
时
我明白了:
Object{}
Window{}
关于Mozilla的其他人/文档说,在没有任何上下文的情况下调用了此函数。并且
this
将是调用该函数的对象。
我不明白的是,这个函数在另一个对象中是如何被认为没有上下文(因此this
默认为全局对象)。这里的逻辑是什么?感谢
答案 0 :(得分:0)
对象引用的函数就像方法一样。当您通过索引对象直接调用函数时,函数将生成的范围中this
将引用此同一对象。
在没有索引对象的情况下调用函数,或者没有设置this
上下文(apply
,bind
,call
,...),如果它是&#39 ; s不处于严格模式(或者在严格模式下至少处于全局范围内)this
应该是全局对象。
当对象是类/接口/函数的实例时,它们的方法也捕获this
的同一对象。
这就是我的工作方式:
(function() {
'use strict'
console.log(this) // undefined
})()
console.log(this) // Window{}