无法访问Javascript属性

时间:2018-11-18 07:07:46

标签: javascript

以下功能失败,Cannot read property 'message' of undefined。 为什么方法message未定义?

function person(name, age) {
    this.name = name;
    this.age = age;
    this.message = function() {
        console.log(this);
        console.log(this.name + " is " + this.age + " years old !");
    }

};

person("nirmesh", 35).message();

3 个答案:

答案 0 :(得分:1)

您正在尝试执行OOP方法,对吗?意味着person(name, age)应该是构造函数。

在这种情况下,您忘记了new关键字来实例化一个新对象,例如:(new person("nirmesh",35)).message();

PS:您实际上并不需要用括号括起来,更多的是为了详细说明:)

答案 1 :(得分:1)

您可以使用 new 关键字并通过传递参数来创建 person object 。然后在该 object 上调用该函数:

function person(name, age) {
    this.name = name,
    this.age = age,
    this.message = function () {
        console.log(this.name + " is " + this.age + " years old !");
    }

};
var p = new person("nirmesh",35);
p.message();

答案 2 :(得分:1)

呼叫人功能不返回任何内容。如果要在调用后访问人员功能,则应将其返回:

function person(name, age) {
        this.name = name;
        this.age = age;
        this.message = function () {
            console.log(this);
            console.log(this.name + " is " + this.age + " years old !");
        }
return this;
    };

    person("nirmesh",35).message();

但是,我不确定您执行此操作的方式是否正确!