【发布时间】: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