为什么我在Javascript中收到错误消息对象没有方法?

时间:2012-06-26 23:38:06

标签: javascript

我有以下代码,但收到错误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());

3 个答案:

答案 0 :(得分:1)

当您使用this.时,范围内的公开。当您使用var时,它是私有。因为您使用了var returnValue,所以它是私有的,因此不会公开使用。

事实上,我猜你想隐藏价值并暴露吸气剂,所以要扭转你所做的......

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

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

答案 1 :(得分: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());

答案 2 :(得分: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;
};