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 に答える