Javascript &引用;这";在顶级函数中

Javascript &引用;这";在顶级函数中,javascript,this,Javascript,This,我理解这个关键字是如何工作的,因为它与所调用的内容相关,可以绑定等等。但我不明白的一点是,在这样一个示例中: function Person(first, last, age, gender, interests) { this.name = { first, last }; this.age = age; this.gender = gender; this.interests = interests; }; 我假设这里会发生的是,它将附加到窗口对象并添加

我理解
这个
关键字是如何工作的,因为它与所调用的内容相关,可以绑定等等。但我不明白的一点是,在这样一个示例中:

function Person(first, last, age, gender, interests) {
  this.name = {
    first,
    last
  };
  this.age = age;
  this.gender = gender;
  this.interests = interests;
};

我假设这里会发生的是,它将附加到窗口对象并添加这些属性。在这种情况下,是什么使“this”关键字的工作方式与我认为的方法或构造函数中的工作方式不同,其中
this
绑定到周围的函数?

确切地说,当您通过
new
操作符调用
Person
函数时,它将成为构造函数,使用
通过
new
表示新创建的对象


换句话说,将
new
视为创建一个新的空对象,然后在这个新创建的对象上调用
Person
,最后返回完全“构造”的对象。

在上面的示例中,函数是一个空对象


希望这能有所帮助:)

取决于你如何“称呼”某人“它与被称呼的内容相关”–不,是关于如何称呼它。函数出现在哪里并不重要。(箭头函数正好相反。)就术语而言,没有所谓的“ES5类构造函数”。ES5甚至没有“类”的概念。从技术上讲,函数本身并不是构造函数,尽管它可能是这样使用的(换句话说,可以通过
new
调用)。