无法访问Javascript属性

问题描述 投票:-2回答:3

下面的函数与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();
javascript
3个回答
1
投票

你正试图做一个OOP方法,对吧?意思是person(name, age)应该是一个构造函数。

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

PS:你真的不需要包装托架,它更多用于阐述:)


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();

但是,我不确定你这样做的方式是否正确!


1
投票

您可以使用new关键字创建person对象并传递参数。然后调用该对象上的函数:

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();
© www.soinside.com 2019 - 2024. All rights reserved.