1

次のコードがありますが、エラーが発生していますUncaught TypeError: Object #<addThis> has no method 'returnValue' (anonymous function)

function addThis() {
    this.value1 = 1;
    this.value2 = 2;

    var returnValue = function () {
        return (this.value1 + this.value2);
    }
}

//Instantiate object and write response
var simpleObject = new addThis();
document.write(simpleObject.returnValue());
4

3 に答える 3

1

returnValueは関数内の単なるローカル変数であるためaddThis、作成されるオブジェクトにはなりません。

関数をオブジェクトのプロパティに割り当てます。

function addThis() {
  this.value1 = 1;
  this.value2 = 2;

  this.returnValue = function() {
    return this.value1 + this.value2;
  };
}

または、オブジェクトのプロトタイプを使用します。

function addThis() {
  this.value1 = 1;
  this.value2 = 2;
}

addThis.prototype.returnValue = function() {
  return this.value1 + this.value2;
};
于 2012-06-26T23:44:53.427 に答える
1

使用するthis.場合は、スコープ内で公開されます。ご利用varの際は、非公開でお願い致します。を使用var returnValueしたため、非公開であり、公開されていません。

実際、値を隠してゲッターを公開したかったので、あなたがしたことを逆にしてください..

function addThis() {
    var value1 = 1;
    var value2 = 2;

    this.returnValue = function () {
        return (this.value1 + this.value2);
    }
}
于 2012-06-26T23:39:51.303 に答える
1

var関数に対してローカルな変数を宣言します。に割り当てるつもりだったと思いますthis.returnValue

function addThis() {
    this.value1 = 1;
    this.value2 = 2;

    this.returnValue = function () {
        return (this.value1 + this.value2);
    };
}

// Instantiate object and write response
var simpleObject = new addThis();
document.write(simpleObject.returnValue());
于 2012-06-26T23:43:15.300 に答える