JavaScript对象引用错误此窗口对象

时间:2018-01-10 03:50:58

标签: javascript this

我正在制作一些JavaScript函数,并试图更好地构建我的构造函数和关键字。

我知道如果以某种方式调用,JavaScript中的this关键字默认为Window对象。

但是,我得到一个变量top的值作为我的控制台中的Window对象,尽管当我分配像var self = this这样的东西时,它始终在一个函数中我使用.call()newthis的范围指定为不属于Window对象。

这是我的问题所在:

 function assignTransformCoordinates(deltaX, deltaY) {
           var imgRect = self.childElements.img.getBoundingClientRect();
           console.log(vpRect,imgRect,deltaX,deltaY,transform.y);
               top = transform.y + deltaY,
               left = transform.x + deltaX;
               console.log(deltaY,transform.y);
               //**above log gives me 6 and 0**
               if (vpRect.top < imgRect.top + deltaY && vpRect.bottom > imgRect.bottom + deltaY) {
                transform.y = top;
                console.log("shift top! " + top);
                //**above log gives me top as [object Window]
            }
       }

我不明白为什么top变成[object Window]只比其声明下面的几行(在记录的示例中评估时)6 + 0。我想即使transform.y在日志中评估为0,当我添加deltaY(6)时,它正在做一些不算算的事情?

transform实例化如下:transform = Transform.parse()

这样做:

var Transform = function (x, y, scale) {
          this.x = parseFloat(x);
          this.y = parseFloat(y);
          this.scale = parseFloat(scale);
      };

      Transform.parse = function () {
             return new Transform(1,1,1); //example values
      };

因为它使用了new关键字,所以我认为转换构造函数中的this不应该是object Window

真的,这是从哪里来的?为什么transform.y看似0,然后在添加6时变成这个奇怪的对象? 0代表其他一些价值吗?

请提供有关如何跟踪此Window对象分配位置的指示的任何建议。

0 个答案:

没有答案