元编程的六个描述符

描述符

var stu = {
    name: "tom",
    birthday: "1995-08-01",
    ID: 341226199508011574
}

Object.defineProperty(stu, "age", {
    value: 20,
    configurable: true,   //默认是false
    enumerable: true,     //默认是false
    writable: true    //默认是false

})

delete stu.age                //删除
for (var key in stu) {        //遍历
    console.log(key);
}
stu.age = 18                  //修改
console.log(stu);
  1. value [ˈvæljuː]

属性的值

  1. configurable 美 [kənˈfɪgjərəbl]

可配置性:是否可用delete删除

  1. enumerable [ɪ'njʊmərəbl]

可枚举性:是否可用for...in遍历

  1. writable 美 [ˈraɪtəbl]

可写性:是否可以更改属性的值

获取对象的属性描述符

Object.getOwnPropertyDescriptor(obj, "name");        //获取属性名为name的属性描述符
Object.getOwnPropertyDescriptors(obj)                //获取当前对象的所有属性的属性描述符

getset出现时valuewritable就没用了

get 一定要有返回值,set可以没有返回值

getset操作

两个操作做是互相作用的,在做动态数据时使用

var o = {
    name: "小霸王学习机",
    price: 100
}

Object.defineProperty(o, "dollar", {
    get: function() {
        return this.price * 0.14;
    },
    set: function(value) {
        this.price = value / 0.14;
    },
    enumerable: true,
    configurable: true
})

console.log(o.dollar);         //激活get操作
o.dollar = 10                  //只是为了激活set操作
console.log(o.dollar);         //激活get操作

获得对象的属性名(对象的遍历)

  1. for...in

  2. Object.keys()

  3. Object.getOwnPropertyNames()

判断当前对象中是否有某个属性

  1. 通过in关键字

  2. 通过hasOwnProperty()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值