gpt4 book ai didi

javascript - getBoundingClientRect 的返回值如何不可变?

转载 作者:行者123 更新时间:2023-11-29 14:50:06 26 4
gpt4 key购买 nike

这里有一些有趣的东西:在任何 JS 窗口中运行:

val = document.body.getBoundingClientRect();
console.log(val)
val.left += 10;
console.log(val)

或对返回值的任何其他修改。这个对象如何不可变?

这使得很难对元素的 getBoundingClientRect() 进行鸭式冲击,从而更改原始值。虽然我想你可以重新创建对象,但我不知道 JS 甚至具有不可变对象(immutable对象)的能力。这是正确的吗?

最佳答案

举个简单的例子:

var getBoundingNothing = {left:20};
Object.freeze( getBoundingNothing ); // if you comment this line...

var gbn = getBoundingNothing;
console.log( gbn ); // Object { left=20 }
gbn.left = 70 ;
console.log( gbn ); // Object { left=20 } // ...than left=70

考虑阅读这篇有趣的文章:http://ejohn.org/blog/ecmascript-5-objects-and-properties/

从那篇文章中,您需要的只是前往 MDN:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze

关于javascript - getBoundingClientRect 的返回值如何不可变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27200295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com