“这个”如何在javascript中运行?

时间:2013-05-30 01:39:39

标签: javascript

嗨我对javascript中this的确切运作方式有点困惑。基于此示例:

var myFunction = function(){
 function testMe(){
  console.log(this)  --------> DOMwindow
 }
 console.log(this) ---------> myFunction
}

var myvariable = new myFunction();

这里发生了什么?

1 个答案:

答案 0 :(得分:5)

this引用取决于具体情况。如果您愿意,任何无范围(即不在对象中)函数调用将具有this = windowDOMWindow。作为原型的一部分,或者使用applybind进行了更改的任何内容都将this作为该对象("本身",如果您愿意)。

所以,来说明一下。当您使用new关键字进行实例化时,您的函数会自动继承this。当您在其中调用IETF时,此IETF中的this将指向全局范围。

如果您想避免这种情况,请务必执行此操作,而不是直接调用testMe

var myFunction = function() {
    var testMe = function() {
        console.log(this);
    }
    testMe.bind(this);
}

反过来,this中的testMe会使用该对象。