一尘不染

这个内部功能

javascript

我的问题是:

function Foo()
{
   this.foo = "bar"; // <- What is "this" here?
}

据我所知,这取决于如何Foo使用,即用作构造函数或函数。可什么this是在不同的情况下?


阅读 194

收藏
2020-05-01

共1个答案

一尘不染

this关键字是指功能所属的对象,或window对象如果函数不属于任何对象。

在OOP代码中使用它来引用该函数所属的类/对象,例如:

function foo() {
    this.value = 'Hello, world';

    this.bar = function() {
        alert(this.value);
    }
}

var inst = new foo();
inst.bar();

这提醒: Hello, world

您可以this使用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
2020-05-01