function myFunction(message)
{
this.message = message;
return this.message;
}
document.body.innerHTML = new myFunction("Hello");
我了解到“在JavaScript中this
始终引用我们正在执行的函数的”所有者“,或者更确切地说,指向函数是其方法的对象。” reference
在这个例子中,似乎myFunction中的this应该引用myFunction的所有者,然后是窗口。似乎它指的是myFunction。这是为什么?
答案 0 :(得分:1)
使用new
运算符时,可以创建constructor function中定义的对象的新实例,this
引用新对象。
通过添加新关键字完全改变了问题之前的旧答案:
由于 myFunction
未使用new
关键字调用,或者在另一个对象的显式上下文中调用,因此它实际上是:document.body.innerHTML = window.myFunction("Hello");
所以 this
是window
对象。
您可以通过将函数编辑为 console.log
来确认这一点,然后查看Firebug。
答案 1 :(得分:0)
如果你调用new myFunction("hello")
,那么this
引用一个新的“空”对象(它不引用函数!)继承自函数prototype属性(myFunction.prototype
)
这样的函数也称为构造函数,通常用大写字母开始名称。