为什么数组'的长度属性'的值改变,即使在javascript中设置为只读
Why an array's length property's value changes even when set as read-only in javascript?
我尝试了以下代码在chrome的控制台
var a = new Array(1,2,3,4);
a.length
显示长度为预期的4。现在我尝试将长度属性设置为可写:false
Object.defineProperty(a, "length", {writable: false});
a[4] = 5;
a.length
结果是5,即使属性被设置为writable:false。这是怎么发生的?它不应该保持与设置为只读(可写:false)相同吗?
Object.defineProperty(a, "length", {writable: false});
只影响直接将值赋给.length
属性的方式。
var a = [1,2,3,4];
Object.defineProperty(a, "length", {writable: false});
a.length = 0;
console.log(a.length); // still be 4
writable
属性仅将赋值操作符的使用限制为属性本身。另外,默认的writable
属性已经是false
。
var a = new Array(1,2,3,4);
a.length; # 4
a.length++; # a.length is still 4
您可以看到:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
如果你想保持a.length
的原始值,我认为你最好将它分配给另一个变量:
x = [1,2,3,4]; # x.length is 4
y = x.length; # y is 4
x = [1,2,3,4,5] # x.length is now 5, but y is still 4
这也取决于length
属性实际返回的内容。请看下面的例子
var MyObject = function(){
var _count = 0;
this.increment = function(){
_count++;
}
this.getCount = function(){
return _count;
}
};
var object = new MyObject();
Object.defineProperty(object, "count", { // new property `count` calls `getCount`
writeable:false,
get: function(){
return this.getCount();
}
});
alert(object.count); // 0
object.count = 90;
object.increment();
alert(object.count); // 1
object.count = 100;
object.increment();
alert(object.count); //2
创建一个属性read-only
意味着你不能给它赋值。同时,它不会改变读取属性时返回的内容。它取决于该属性的内部定义
相关文章:
- 通过Javascript设置Telerik RadTreeView属性,如OnClientNodeExpanded
- 使用javascript设置iframe的高度
- 通过JavaScript设置表单目标
- 如何确定相对较新版本的IE的高度和宽度(IE8不喜欢从JavaScript设置这种样式吗?
- 通过JavaScript设置的表单字段的值不会作为$_POST的一部分传递给PHP脚本
- 如何在Internet Explorer中使用javascript设置cookie
- Javascript设置日期不起作用,显示错误的时间
- iOS Safari Javascript设置超时问题
- 使用Javascript设置库中图像包装器的宽度
- 如何检查日期选择器和时间选择器元素是否使用JQuery/Javascript设置
- 如何使用javascript设置元素旋转和动态观察的动画
- 在 PHP 块中使用 Javascript 设置 HTML 文本框的值(使用 echo)
- 通过javascript设置IE特定的css样式
- Javascript-设置cookie并拉入ID
- ASP从Javascript设置控件值
- 尝试使用window.innerHeight和Javascript设置图像高度
- 使用JavaScript设置整个页面的字体大小
- 使用纯Javascript设置最小高度属性
- 如何通过javascript设置支柱列表2
- 使用 JavaScript 设置 的点击