Object.defineProperty和hasOwnProperty的使用,(属性代理、双向绑定Object.defineProperty)

Object.defineProperty

语法 :Object.defineProperty(obj, prop, descriptor)
参数 :obj是对象,prop要定义或修改的属性(key)的名称或 Symbol ,descriptor定义或修改属性值的描述符
注意:使用set和get方法时,writable和value不可设置

    var obj = {
      age: "22",
    };
    Object.defineProperty(obj, "name", {
      // 不可删除(不可修改属性),如果不设置时,默认值false,不可删除
      configurable: true,
      // 不可遍历属性(枚举属性),默认值是false,不可以枚举(不可以使用assign)
      enumerable: true,
      // 是否可修改属性,默认值是false,不可修改
      // writable: true,
      // value: "小米",
      set: function (value) {
        name = value;
        console.log(name);
      },
      get: function () {
        return name ? name : (name = "小明");
      },
    });
    obj.name = "小米";
    console.log(obj.name);//小米
    console.log(obj);
##### 判断defineProperty的值是否可以枚举
    for (const key in obj) {
      if (obj.hasOwnProperty(key)) {
        const element = obj[key];
        console.log(element);
      }
    }

hasOwnProperty的使用

语法:obj.hasOwnProperty(prop)
prop:要检测的属性,String 字符串类型的名称,用来判断某个对象是否含有该属性
返回值::布尔值 Boolean。有返回true,没有返回false
示例:

const object1 = {};
object1.property1 = 42;

console.log(object1.hasOwnProperty('property1'));
// expected output: true

console.log(object1.hasOwnProperty('toString'));
// expected output: false

console.log(object1.hasOwnProperty('hasOwnProperty'));
// expected output: false

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值