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

当您使用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 回答
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 回答