JS中对象的属性

属性类型

在ECMA-262中,对于对象的定义如下:无序属性的集合,其属性可以包含基本值、对象或者函数
在JS中对象的中的值的形式是键值对的形式。特别注意的是,对象的键是以字符串形式映射的,下面这个例子中,obj[1]和obj[‘1’]指向的是一个属性。

var obj = new Object()
obj[1] = 'num';
obj['1'] = 'string';  // obj = {1:'string}

在ES5的描述中,ECMAScript中有两种属性:数据属性和访问器属性

数据属性

有以下四个特性

  • 【【Configurable】】:表示能否通过delete删除属性,或者能否修改属性的特性,或者能否把属性修改为访问器属性。在直接对象上定义的属性,默认是true.
  • 【【Enumerable】】:表示能否被枚举,for-in 或者Object.keys().默认是true.
  • 【【Writable】】:表示能否改下属性的值,默认是true。
  • 【【Value】】:包含这个属性的值。
var obj = new Object()
obj.name = "张三";

Object.defineProperty(obj,'age',{
    enumerable:false,
    configurable:false,
    writable:false,
    enumerable:false,
    value:17
});
console.log(obj.age);   // 17
obj.age = 10;
console.log(obj.age);   // 17
delete obj.age
console.log(obj.age);   // 17
Object.defineProperty(obj,'age',{   // 报错...
    value:20
})
console.log(obj.age);

访问器属性

有以下四个特性

  • 【【Configurable】】
  • 【【Enumerable】】
  • 【【Get】】:读取属性时调用的方法。默认值时undefined
  • 【【Set】】: 写入属性时调用的方法。默认值时undefined

ps:Get 和Set 方法不能和Writable和 Value同时设置。

相关函数

  • Object.defineProperty(obj, prop, descriptor):为一个对象新建或者修改一个属性
    obj:必需。目标对象
    prop:必需。需定义或修改的属性的名字
    descriptor:必需。目标属性所拥有的特性
Object.defineProperty(obj,'age',{
    enumerable:false,
    configurable:false,
    writable:false,
    enumerable:false,
    value:17
});
  • Object.defineProperties(obj, {prop: descriptor}):可以为一个对象赋值多个属性。
Object.defineProperties(obj,{'age':{
    value:17
},'class':{
    value:"高二"
}
});
  • Object.getOwnPropertyDescriptor(obj, prop):可以取得给定属性的描述符
Object.defineProperty(obj,'age',{
    enumerable:false,
    configurable:false,
    writable:false,
    enumerable:false,
    value:17
});
Object.getOwnPropertyDescriptor(obj,'age');

结果:
结果

参考:

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值