Javascript:是否有任何后门方法来访问数组的真正隐藏/私有长度属性
Javascript: Is there any backdoor way to access the real hidden/private length property of an array?
我在 JavaScript Garden 了解到数组长度属性是一个门面。它是一个 API,而不是保存长度的文本属性。它充当实际长度属性的获取者/设置器:
"While the getter of the length property simply returns the number of elements that are contained in the array, the setter can be used to truncate the array."
是否有任何后门方法可以访问数组的真实隐藏/私有长度属性?
你相信
Array.prototype.length 是一个 getter,或者有任何特殊的隐藏别名的逻辑是什么?
有多种方法可以修改数组长度的值(弹出、推送、移位、取消移位等),所以在我看来,虽然可能有一个赋值器,以便:
var x = [0,1,2,3];
x.length = 2;
首先创建一个长度为 4 的数组,然后将其长度设置为 2,从而删除最后两个成员,我看不出 getter 比简单地返回由其他方法更新的长度更有效
。为什么长度会以其他方式实现?如果是,这个隐藏长度的目的是什么?既然如果实现它将完全依赖于实现,那么它将如何使用它?
有趣的想法。我敢肯定答案是否定的,你无法访问它。我想Array#length
实现为 getter 的原因只是为了也可以定义自定义 setter。
我想象内部看起来像这样:
function FakeArray() {
var _length = 0;
Object.defineProperty(this, 'length', {
get: function() {
return _length;
},
set: function(length) {
// some functionality to chop the array
this.splice(length);
_length = length;
return _length;
}
});
}
相关文章:
- 如何从django表单库中隐藏复选框,并使用Javascript切换其显示属性
- 如何在弹出窗口中隐藏文本属性'It’传单上没有填写
- 正在代码隐藏中检索选定ListBox项的属性数据
- 为什么我的html节点保持类ng隐藏属性ng show=true
- 如何从浏览器隐藏视频src属性's检查元素
- 在Chrome中隐藏__proto__属性's控制台
- 隐藏元素:Javascript属性和CSS样式之间的区别
- 添加隐藏属性以存储其他属性值
- 使用jQuery隐藏具有非唯一属性的元素
- 如何使用 javascript 更改按钮的可见/隐藏属性
- 打印对象的所有隐藏属性
- jQuery-UI不能识别html5的隐藏属性
- 在返回字符串的getter上有一个隐藏属性
- Jquery显示隐藏属性
- 引导模式显示不会移除隐藏属性
- 我们如何从对象中获得隐藏属性
- Jquery通过隐藏属性和值比较改变span值
- ng-repeat隐藏属性,如果它等于DateTime.MinValue
- 在 Angular 智能表中过滤,如何使其不搜索隐藏属性
- 在 JavaScript 中使用重排隐藏元素,它与 CSS 隐藏属性有何不同