有没有办法在javascript中找出所有用户定义的窗口属性和变量(全局变量)?
我尝试了,console.log(window)
但列表是无止境的.
我目前有一个div与其中的其他元素结构.
类似于下面的东西;
<div id="container" style="position: relative; width: 500px; height: 500px;">
<div style="position: absolute; left: 50px; top: 50px;"></div>
<div style="position: absolute; left: 100px; top: 100px;"></div>
</div>
Run Code Online (Sandbox Code Playgroud)
我试图获取相对于div的div的鼠标位置container
.
到目前为止,我有这个;
function onMousemove(event) {
x = event.offsetX;
y = event.offsetY;
};
var elem = document.getElementById("container");
elem.addEventListener("mousemove", onMousemove, false);
Run Code Online (Sandbox Code Playgroud)
如果带有id的div container
没有子节点,这可以正常工作.当container
div有子节点时,它会获得相对于孩子而不是父节点的鼠标坐标.
我的意思是,如果鼠标位于x: 51, y: 51
相对于父div 的位置,它实际上将x: 1, y: 1
使用上面给出的html相对于子div 返回.
我怎样才能实现我想要的,请不要图书馆.
编辑
tymeJV善意地说明了上面发生的事情.
我总是在对象的原型中设置具有值类型的属性,因为这会阻止每次创建对象时都必须初始化它们.
从那以后,我做了一些调试,发现如果原型属性的值会发生变化,那么会为对象分配一个新属性,并保持原型.
var o = function () {
};
o.prototype.x = 0;
o.prototype.setX = function(x) {
this.x = x;
};
var obj = new o();
obj.setX(1);
console.log(obj);
// o {x: 1, x: 0, setX: function}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如果您知道原型属性的值可能会发生变化,那么在原型中设置它并获得它不需要在对象创建时进行初始化是否有任何实际好处?
我的意思是当它改变为另一个值时,必须将新值分配给现有对象,从而失去了首先在原型中设置它的初始好处!此外,它现在意味着您在对象中有一个属性,在原型中有一个属性.
它在谷歌开发者说,这是这样做的方式,但我不太确定.
什么时候应该在原型中设置值类型属性,当你知道值会改变时,是否有任何实际的性能提升?
我有一个像这样的数组
var updates = [];
Run Code Online (Sandbox Code Playgroud)
然后我像这样将数据添加到数组中
updates["func1"] = function () { x += 5 };
Run Code Online (Sandbox Code Playgroud)
当我用for循环调用函数时,它按预期工作
for(var update in updates) {
updates[update]();
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用forEach它不起作用!?
updates.forEach(function (update) {
update();
});
Run Code Online (Sandbox Code Playgroud)
forEach绝对可以在我的浏览器中使用google chrome,我做错了什么?
简单地说,我可以检查对象是否具有用户定义的原型?
例;
var A = function() {};
var B = function() {};
B.prototype = {
};
// Pseudocode
A.hasUserPrototype(); // False
B.hasUserPrototype(); // True
Run Code Online (Sandbox Code Playgroud)
这可能吗?
有没有办法知道浏览器何时正在运行requestAnimationFrame
?
例如,当我从正在运行的标签切换标签时requestAnimationFrame
,该功能停止执行,当我切换回它继续时,处理这个的最佳方法是什么?