当使用它的函数被称为`new myFunction(“Hello”)`时,'this'指的是什么

时间:2010-12-29 12:29:28

标签: javascript this

function myFunction(message)
{
this.message = message;
return this.message;
}

document.body.innerHTML = new myFunction("Hello");

我了解到“在JavaScript中this始终引用我们正在执行的函数的”所有者“,或者更确切地说,指向函数是其方法的对象。” reference

在这个例子中,似乎myFunction中的this应该引用myFunction的所有者,然后是窗口。似乎它指的是myFunction。这是为什么?

2 个答案:

答案 0 :(得分:1)

使用new运算符时,可以创建constructor function中定义的对象的新实例,this引用新对象。

通过添加新关键字完全改变了问题之前的旧答案:

由于myFunction未使用new关键字调用,或者在另一个对象的显式上下文中调用,因此它实际上是:document.body.innerHTML = window.myFunction("Hello");

所以thiswindow对象。

您可以通过将函数编辑为console.log来确认这一点,然后查看Firebug。

答案 1 :(得分:0)

如果你调用new myFunction("hello"),那么this引用一个新的“空”对象(它不引用函数!)继承自函数prototype属性(myFunction.prototype

这样的函数也称为构造函数,通常用大写字母开始名称。