Javascript中的函数上下文和此关键字

时间:2016-11-15 20:27:26

标签: javascript

有人可以一劳永逸地为我们所有人做好准备吗?

var parent = {child: function(){
        console.log(this); 
        var log = function(){ 
        console.log(this);}; 
        log();
    }
}

当我致电parent.child()时 我明白了:

Object{}
Window{}

关于Mozilla的其他人/文档说,在没有任何上下文的情况下调用了此函数。并且

this

将是调用该函数的对象。 我不明白的是,这个函数在另一个对象中是如何被认为没有上下文(因此this默认为全局对象)。这里的逻辑是什么?感谢

1 个答案:

答案 0 :(得分:0)

对象引用的函数就像方法一样。当您通过索引对象直接调用函数时,函数将生成的范围中this将引用此同一对象。

在没有索引对象的情况下调用函数,或者没有设置this上下文(applybindcall,...),如果它是&#39 ; s不处于严格模式(或者在严格模式下至少处于全局范围内)this应该是全局对象。

当对象是类/接口/函数的实例时,它们的方法也捕获this的同一对象。

这就是我的工作方式:

(function() {
    'use strict'
    console.log(this) // undefined
})()

console.log(this) // Window{}