【问题标题】:'this' on the object constructor function [duplicate]对象构造函数上的“this”[重复]
【发布时间】:2016-10-12 13:33:01
【问题描述】:

我了解到“this”是如何在 javascript 中详细工作的。

在 w3school 中,它解释了这是如何工作的。 (http://www.w3schools.com/js/js_object_definition.asp)

“this的值,当在函数中使用时,是“拥有”该函数的对象。

在对象中使用时 this 的值就是对象本身。”

根据我的理解,对象构造函数是函数,而不是对象,根据上面的定义,构造函数中的“this”应该是指拥有这个构造函数的对象(在全局范围内,这将是窗口对象) .

然而,'this' 指的是对象构造函数。这是为什么?

function person(first, last, age) {
   this.firstName = first;
   this.lastName = last;
   this.age = age;}

我尝试过查看有关堆栈溢出的其他示例,但它们似乎并没有详细说明这个概念。

【问题讨论】:

  • 不要依赖 W3schools。在这种情况下,两种说法要么是错误的,要么是误导性的,尤其是第二种。尤其是 JS 中没有“拥有”的概念。不用说,构造函数中的this指的是正在构造的对象。
  • 我认为这不是真的。 Maxim Egorushkin 似乎已经在下面的答案中找到了答案
  • @Cerbrus 这不是重复的 IMO,你提到的问题更笼统,而这个问题非常具体。
  • @MaximEgorushkin:链接的目标准确地解释了this 的工作原理。看完之后,这个问题就多余了。
  • @MaximEgorushkin 也许您或其他人,包括 OP,应该阅读更多的文字墙。看书——哦,多么新颖的概念。您认为 StackOverflow 是一项免费的“我们为您阅读书籍,因此您不必阅读”的服务?

标签: javascript function object this


【解决方案1】:

在用new 调用的构造函数中,this 指的是正在构造的对象。

【讨论】:

  • 谢谢!当调用对象构造函数时,'this' 相当有用!这很有意义。
  • @peakersky 重要的一点当对象构造函数被new调用时。
  • 感谢您的锐化! :)
  • 当不使用new 调用时,它不能用作构造函数,因此这样说是多余的。它是一个构造函数因为它是用new 调用的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 2018-02-27
  • 2012-12-22
  • 2018-05-09
相关资源
最近更新 更多