JavaScript类 - 在私有方法中访问public var时遇到问题

时间:2010-08-23 17:09:01

标签: javascript

似乎是一个简单的问题,但无法使其发挥作用。

在下面的示例中,将调用unselect,但未定义公共变量“this.backSelected”。如果我将unselect方法的代码直接移动到public off方法中就可以了。

如何在私有方法中检查公共变量?我不明白为什么这不起作用。

感谢。

function MyClass() 
{
    // public vars
    this.isActive = false;
    this.backSelected = false;

    // public methods
    this.on = function() {
       this.isActive = true;
       this.backSelected = true;
       // set back button on image
    }

    this.off = function() {
      this.isActive = false;
      unselect();
    }

    // private methods
    function unselect() {
        if(this.backSelected) {
           // set back button off image
        }
    };


}

var obj = new MyClass(); obj.on(); obj.off();

1 个答案:

答案 0 :(得分:5)

您没有在上下文中调用unselect,因此this并不代表您认为的含义。

unselect.apply(this);