4

hi i am a little confusion on how exactly this works in javascript.Based on this example:

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

var myvariable = new myFunction();

What is happening here?

4

1 回答 1

5

价值this参考取决于具体情况。任何无作用域(即不在对象中)的函数调用都将具有this= window( DOMWindow,如果您愿意的话)。任何属于原型的部分,或已使用applyor更改bind的内容都将this作为该对象(“它本身”,如果您愿意的话)。

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

如果您想避免这种情况,而不是按testMe字面意思调用,您可以随时这样做:

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

反过来,这将按应有thistestMe方式使用该对象。

于 2013-05-30T01:45:08.667 回答