JavaScript对象范围 - 在对象方法中使用对象变量

时间:2015-03-24 06:51:31

标签: javascript scope closures this

我试图理解JavaScript对象语法。我有一个画布元素,我正在绘制,我想改变我绘制的模式。我希望它能像这样工作:

pattern1 = {
    'x':0,
    'y':0,
    'draw': function() {
        context.clearRect(0,0,w,h);
        context.save();
        context.translate(this.x, this.y);
        context.fillText('Hello', 0, 0);
        context.restore();
        this.x += 1;
        this.y += 1;
    }
};

但这不起作用。 ' x'并且' y'变量不在"这个"范围。因此,我没有使用它,而是明确地引用了对象:' pattern1.x'和' pattern1.y'。但似乎应该有更好的方法来做到这一点。

我不是在寻找一个"解决方案"这里作为解释。感谢。

1 个答案:

答案 0 :(得分:1)

pattern1 = function (){
    this.x=0;
    this.y=0;
    this.draw= function() {
        context.clearRect(0,0,w,h);
        context.save();
        context.translate(this.x, this.y);
        context.fillText('Hello', 0, 0);
        context.restore();
        this.x += 1;
        this.y += 1;
    }
};

var patObj=new pattern1 ();    // Function Calling
patObj.draw();