我知道在javascript中,当你"this"在函数中使用关键字时,"this"会根据Quirksmode网站引用该函数的"所有者" .因此,当我们有一个函数并"this"在内部使用它时,则"this"引用全局(窗口)对象.
我对如何"this"工作有点困惑,例如在下面的代码中,"this"然后应该能够解决,x因为x它几乎是全局对象的属性(在本例中是窗口).但this.x在这种情况下警报"undefined"而不是x值.
var x = "Global";
function foo(){
alert(this.x); //undefined
};
foo();
Run Code Online (Sandbox Code Playgroud)
然后我尝试了其他一些事情:
function bar(){
function foo(){
alert(this); //[Object DOMWindow]
};
foo();
};
bar();
Run Code Online (Sandbox Code Playgroud)
如果我的理解是正确的,那么'this'应该参考bar()第二种情况,因为它是所有者foo(),但为什么它仍然是指全局对象?
有人可以解释关于"this"关键字的正确理论是什么?
你有错误的结局.值this取决于函数的调用方式,而不是函数的定义方式.
window.foo()(那里foo)this将是windowbar.foo(),然后this会bar(虽然你需要复制foo所以它的属性bar第一)baz.bar.foo(),然后this会bar(你永远只能得到通过父对象this)foo.call(bar),然后this也将是bar为call让您可以覆盖thisnew foo()那么this将是正在创建的新对象在默认的对象window,因此,如果您只需要调用foo()则是一样的window.foo().
函数定义的范围无关紧要.
| 归档时间: |
|
| 查看次数: |
1317 次 |
| 最近记录: |