getBoundingClientRect的返回值如何不可变
How is return value of getBoundingClientRect Immutable?
这里有一些有趣的事情:在任何JS窗口运行中:
val = document.body.getBoundingClientRect();
console.log(val)
val.left += 10;
console.log(val)
或对返回值的任何其他修改。此对象如何不可变?
这使得很难对元素的getBoundingClientRect()进行攻击,从而更改原始值。虽然我想你可以重新创建对象,但我不知道JS甚至具有不可变对象的能力。这是对的吗?
只是一个简单的例子:
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
相关文章:
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- PHP 函数不会向 JavaScript 变量返回值
- 使用this和onclick()时不能返回id值
- Javascript只返回键,不返回值
- 使用动态键返回不可变状态
- 函数不会返回值
- 提交时不采用函数返回值.并且没有按预期行事
- 动态添加的输入元素不会在脚本中返回值
- jQuery 函数不返回值
- 偏移宽度返回不正确的值
- Yui Get 复选框返回数组而不是布尔值
- Javascript 中的构造函数不会返回由原型函数传递的正确值
- Javascript:检查函数本身的相等性,而不是返回值
- javascript中不可变的值
- 修改函数以计算到新的一年,而不是返回值 12/33/2014
- getBoundingClientRect的返回值如何不可变
- Javascript函数可以写入控制台,但不能返回值
- 闭包不能返回值
- Javascript不能返回值
- Javascript不等待返回值