我正在制作一些JavaScript函数,并试图更好地构建我的构造函数和关键字。
我知道如果以某种方式调用,JavaScript中的this
关键字默认为Window
对象。
但是,我得到一个变量top
的值作为我的控制台中的Window
对象,尽管当我分配像var self = this
这样的东西时,它始终在一个函数中我使用.call()
或new
将this
的范围指定为不属于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对象分配位置的指示的任何建议。