JavaScript 对象属性操作

1. 数据属性(数据描述符)

  • Configurable 表示能否通过delete删除此属性,能否修改属性的特性,或能否修改把属性修改为访问器属性,如果直接使用字面量定义对象,默认值为true
  • Enumerable 表示该属性是否可枚举,即是否通过for-in循环或Object.keys()返回属性,如果直接使用字面量定义对象,默认值为true
  • Writable 能否修改属性的值,如果直接使用字面量定义对象,默认值为true
  • Value 该属性对应的值,默认为undefined

2. 访问器属性(存取描述符)

  • Configurable 和数据属性的 Configurable 一样
  • Enumerable 和数据属性的 Enumerable 一样
  • Get
  • Set

3. Object.defineProperty()

  • 直接在一个对象上定义或修改单个属性, 并返回这个对象。
  • 若不指定configurablewritableenumerable,默认为 false
  • 若不指定valuegetset,默认为 undefined
  • 参数:obj(目标对象)、prop(属性名)、descriptor(描述符)
// 语法
Object.defineProperty(obj, prop, descriptor)

var obj = new Object();
Object.defineProperty(obj, 'name', {
    configurable: false, // 能否通过 delete 删除该属性
    writable: true,      // 能否修改属性值
    enumerable: true,    // 是否可枚举
    value: 'hannah'      // 属性对应的值
})

console.log(obj.name) // => hannah

4. Object.defineProperties()

  • defineProperty 不同的是可操作多个属性
// 语法
Object.defineProperties(obj, props)

var obj = new Object();
Object.defineProperties(obj, {
    name: {
        configurable: false, // 能否通过 delete 删除该属性
        writable: true,      // 能否修改属性值
        enumerable: true,    // 是否可枚举
        value: 'hannah'      // 属性对应的值
    },
    age: {
        configurable: true,
        value: 18
    }
})

console.log(obj.name, obj.age) // hannah, 18

5. Object.getOwnPropertyDescriptor()

// 语法
Object.getOwnPropertyDescriptor(obj)

var person = {
    name: 'hannah',
    age: 18
}
var name = Object.getOwnPropertyDescriptor(person, 'name');
console.log(name)
  • 输出:
    这里写图片描述

6. Object. getOwnPropertyDescriptors()

// 语法
Object.getOwnPropertyDescriptors(obj)

var person = {
    name: 'hannah',
    age: 18
}
var name = Object.getOwnPropertyDescriptors(person);
console.log(name)

这里写图片描述

参考
js中的Object.defineProperty()和defineProperties()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值