为什么这个javascript代码不起作用?

时间:2010-12-29 12:38:54

标签: javascript

function myFunction(messager) {
    this.message = messager;
}
new myFunction("Hello");
document.write(myFunction.message);

4 个答案:

答案 0 :(得分:4)

您试图引用函数对象本身的一个成员,这是完全错误的。

thisnew关键字结合使用时,this将引用从构造函数隐式返回的对象实例。

此代码应该有效:

function myFunction(messager) {
    this.message = messager;
}
var obj = new myFunction("Hello");
document.write(obj.message);

您还可以使用prototype成员将成员函数和变量扩充到创建的对象上:

myFunction.prototype.doSomething = function() {
   alert('Hello ' + this.message);
}

obj.doSomething(); //alerts "Hello Hello"

答案 1 :(得分:4)

您需要创建一个新实例并使用它:

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

var mf = new myFunction("Hello");
document.write(mf.message);

答案 2 :(得分:3)

new关键字会导致this引用对象的实例,而不会引用构造函数

function myFunction(messager) {
    this.message = messager;
}
var instance = new myFunction("Hello");
document.write(instance.message);

答案 3 :(得分:0)

已经有了很好的答案,所以我只提供一个简单的答案。此代码创建一个实例,但不将其存储在任何位置:

new myFunction("Hello");