1

无论出于何种原因,我TypeError: Object #<Num> has no method 'getNumber'在创建numberOneNum

function Num(n) {
    var number = n;
    var getNumber = function() {
        return number;
    };
}

var numberOne = new Num(5);
console.log(numberOne.getNumber());
4

2 回答 2

2

您在getNumber函数内声明为局部变量。这些不会成为构造对象的属性。

使用this

  this.getNumber = function() { ...

在构造函数中,this指的是要初始化的新创建的对象。

您还可以使用原型机制来提供对象属性。

于 2012-06-30T19:51:09.193 回答
1

您正在创建一个getNumber未将其附加到对象的局部变量。要么把它交给对象,要么把它放在原型上:

this.getNumber = function() {

或者

function Num(n) {
    this.number = n;
}

Num.prototype.getNumber = function() {
    return this.number;
}

如果您正在创建大量对象,您可能想要放置getNumber原型,这样它就不会在每次创建时都添加到对象中。

于 2012-06-30T19:51:34.277 回答