调用方法foo()
,sx ++不会改变。当我alert(sx)
我得到NaN。我应该使用原型来定义方法吗?
function fooClass(sx) {
this.sx = sx;
this.foo = function() {
if(booleanIsTrue) this.sx++;
};
}
*忽略语法错误(如果有)。这不是复制粘贴。这在我的项目中是正确的。
将sx++
移出if语句的作用。
有关为何发生这种情况的任何想法?
答案 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