javascript中数据属性的一些小结

本文深入解析JavaScript中数据属性的特性,包括configurable、writable、enumerable和value属性,通过实例演示如何使用Object.defineProperty()方法修改这些特性,并讨论在不同模式下属性配置的限制。

数据属性包含一个数据值的位置。在这个位置可以读取和写入值。

属性特性:
[[Configurable]]  能不能通过delete伤处属性从而从新定义属性。true
[[Enumerable]]  能不能通过for-in来喜欢返回属性(prototype不可枚举,不能用for-in)true
[[Writable]]  能不能修改属性值 true
[[Value]]  包含这个属性的属性值 undefined
 
修改属性默认的特性:
Object.defineProperty() 
三个参数:属性所在的对象,属性的名字,一个描述对象。
描述符:是属性特性中的一个或者多个。
 
小测试:
 1 <script>
 2 //"use strict";
 3 var dada = {
 4      name : "yujianqi",
 5      age : 27,
 6      city : "beijing"
 7 };
 8 Object.defineProperty(dada,"name",{
 9      configurable : true,//能不能通过delete伤处属性从而从新定义属性
10      writable :false,//能不能修改属性值
11      enumerable : true,//能不能通过for-in来喜欢返回属性
12      value : "dada" //包含这个属性的属性值
13 });
14 dada.name = "prince";
15 delete dada.name
16 for(var a in dada){
17      alert(a)
18 }
19 //alert(dada.name);
20 </script>

注意点:

1.把configurable 属性设置为false表示不能删除属性。如果调用delete,在非严格模式下什么事都没有,但是在严格模式下会报错。
 
2.而且一但设置了不可配置的属性,就不能再把他变为可以配置 了、在调用Object.defineProperty() 修改除了writable之外的特性都会报错。
 
3.也就是说,可以在调用Object.defineProperty() 方法修改同一个属性,但在把configurable 设置为false后就会有限制。

转载于:https://www.cnblogs.com/snowinmay/archive/2013/05/08/3066522.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值