嗨我对javascript中this
的确切运作方式有点困惑。基于此示例:
var myFunction = function(){
function testMe(){
console.log(this) --------> DOMwindow
}
console.log(this) ---------> myFunction
}
var myvariable = new myFunction();
这里发生了什么?
答案 0 :(得分:5)
值this
引用取决于具体情况。如果您愿意,任何无范围(即不在对象中)函数调用将具有this
= window
(DOMWindow
。作为原型的一部分,或者使用apply
或bind
进行了更改的任何内容都将this
作为该对象("本身",如果您愿意)。
所以,来说明一下。当您使用new
关键字进行实例化时,您的函数会自动继承this
。当您在其中调用IETF时,此IETF中的this
将指向全局范围。
如果您想避免这种情况,请务必执行此操作,而不是直接调用testMe
:
var myFunction = function() {
var testMe = function() {
console.log(this);
}
testMe.bind(this);
}
反过来,this
中的testMe
会使用该对象。