无法在javascript函数中更改类变量

时间:2013-11-12 12:52:20

标签: javascript if-statement increment

调用方法foo(),sx ++不会改变。当我alert(sx)我得到NaN。我应该使用原型来定义方法吗?

function fooClass(sx) {
    this.sx = sx;
    this.foo = function() {
      if(booleanIsTrue) this.sx++;
    };
}

*忽略语法错误(如果有)。这不是复制粘贴。这在我的项目中是正确的。

sx++移出if语句的作用。

有关为何发生这种情况的任何想法?

2 个答案:

答案 0 :(得分:0)

您遇到此问题是因为您要添加错误的变量。您想要更改类变量sx。

正如有人所指出的,上课是一个保留词,通常你用的是klass。

此外,您应该使用{},尝试将代码输入JSLint并查看它返回的内容。

试试这个:

function klass(sx) {
    this.sx = sx;
    this.foo = function(booleanIsTrue) {
      if(booleanIsTrue === true) {
        this.sx++;
      }
    };
}

var a = new klass(3);
a.foo(true);
console.log(a.sx); // 4

答案 1 :(得分:0)

正如你所说的那样,你会想要使用prototype chain而不是为函数创建的每个对象创建新函数。这看起来像这样

var FooClass = function (sx) {
    this.sx = sx;
};

FooClass.prototype.foo = function () {
  if (booleanIsTrue) { //Where is booleanIsTrue coming from?
    this.sx++; 
  }
};


var a = new FooClass(0);
a.foo();
console.log(a.sx); //1