控制台输出NaN

时间:2016-05-03 15:53:50

标签: javascript

我正在尝试在对象内部的方法上设置间隔。 JavaScript似乎是一种非常奇怪的行为。输出NaN。

var bar = {
        width:0,
        move:function() {
            this.width++;
            console.log(this.width);
        }
    }
   setInterval(bar.move,100);

有人知道如何解决这类问题吗?看起来它并不真正理解this关键字。

2 个答案:

答案 0 :(得分:1)

为什么不使用closure

var bar = (function() {

  var width = 0;

  function move() {
    ++width;
  }

  return {
    get width() {
      // using only a getter makes "width" immutable
      return width;
    },
    move: move // make the move method public
  };
});

var newBar = bar();
var newBar2 = bar();

我个人更喜欢这个" revealing module pattern"。您不仅可以保留变量" private",而且它还具有高度可重用性。

注意:在所有现代浏览器中都支持在对象文字中使用getter,IE9 +

答案 1 :(得分:0)

此处Position def Position(*args, **kwargs): """Position(self, Point ptOrigin, Size size)""" return _windows_.PopupWindow_Position(*args, **kwargs) 个对象。所以它在窗口上下文中期望this变量。因此,如果您希望代码正常工作,则必须按如下方式设置上下文栏:

window