我的问题是:
function Foo() { this.foo = "bar"; // <- What is "this" here? }
据我所知,这取决于如何Foo使用,即用作构造函数或函数。可什么this是在不同的情况下?
Foo
this
的this关键字是指功能所属的对象,或window对象如果函数不属于任何对象。
window
在OOP代码中使用它来引用该函数所属的类/对象,例如:
function foo() { this.value = 'Hello, world'; this.bar = function() { alert(this.value); } } var inst = new foo(); inst.bar();
这提醒: Hello, world
Hello, world
您可以this使用apply()或call()函数操纵引用的对象。 (有时非常方便)
apply()
call()
var bar1 = new function() { this.value = '#1'; } var bar2 = new function() { this.value = '#2'; } function foo() { alert(this.value); } foo.call(bar1); // Output: #1 foo.apply(bar2, []); // Output: #2