对象方法--Object.keys,Object.defineProperty

        var obj = {
            id: 1,
            pname: '小米',
            price: 3999
        };

一、遍历对象

        var arr = Object.keys(obj); //遍历对象
        console.log(arr);  //返回一个有属性名组成的数组["id", "pname", "price"]

二、修改对象属性

1)value:设置属性的值,默认为undefined

        Object.defineProperty(obj, 'pname', {
            value: '华为'    //修改属性
        })
        console.log(obj.pname); //华为

        也可用来设置新属性

        Object.defineProperty(obj, 'color', {
            value: 'gold',   //定义新属性
        })
        console.log(obj);   //{id: 1, pname: "华为", price: 3999, color: "gold"}

2)writable:值是否可以重写,默认为false

        Object.defineProperty(obj, 'id', {
            writable: false  //不能被修改
        })
        obj.id = '12';
        console.log(obj.id);    //  1

3)enumerable:目标属性是否可以被枚举,默认为false

        Object.defineProperty(obj, 'color', {
            value: 'gold',   //定义新属性
            enumerable: false,   //不能被枚举
        })
        arr.forEach(function (val) {
            console.log(val);   //输出属性值
        })

4) configurable:目标属性是否可以被删除或是否可以再次修改特性,默认为false

        //默认值皆为false
        Object.defineProperty(obj, 'color', {
            value: 'gold',   //定义新属性
            enumerable: false,   //不能被枚举
            configurable: false  //不能被删除或者再次修改属性
        })


        obj.color='yellow';
        delete obj.color;
        console.log(obj);   //{id: 1, pname: "华为", price: 3999, color: "gold"}

5)set和get方法

        var obj = {
            id: 1,
            pname: '小米',
            price: 3999
        };
        var _price = 3999;

        //set可以监听数据的赋值操作 get可以监听到获取值,函数return的值是属性值
        Object.defineProperty(obj, 'price', {
            // value: '华为'    //修改属性
            configurable: true,
            set: function (newVal) {
                console.log('监听到price发生了改变,最新价格为:' + newVal);
                _price = newVal;

            },
            get: function () {
                return _price;
            }

        })
        console.log(obj.price);  //3999
        obj.price = 1234;   //监听到price发生了改变,最新价格为:1234
        console.log(obj.price);     //1234

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值