我知道DOMRect属性是从DOMRectPrototype继承的,因此Object.assign和Object.keys无法访问它们,因此DOMRect属性不可枚举。我的问题是,这样做的原因是什么?
我有一个函数可以比较两个对象是否相等,我想通过它运行2个document.body.getBoundingClientRect()
个实例。如何在原型上定义可枚举的get属性?我试过这个:
const rect = document.body.getBoundingClientRect();
Object.defineProperty(rect, "b", { enumerable: true, get: function () { return rect }});
Object.keys(rect)
但没有运气,它将DOMRect属性作为单个对象返回
答案 0 :(得分:0)
虽然我不鼓励这样做,但回答你的问题:
function copyDOMRect(input) {
return {
x: input.x,
y: input.y,
left: input.left,
right: input.right,
top: input.top,
bottom: input.bottom,
height: input.height,
width: input.width,
};
}
copyDOMRect(new DOMRect(0,0,100,100)); // now you can use Object.keys, etc.
你也可以修改DOMRect的原型(也不鼓励),使这更简单。