Javascript对象的属性

对象的属性

按所属关系进行分类

自有属性

意思就是定义在对象本身上面的属性;
例如:下面定义在对象obj上的x,y属性。

let obj = {x:12,y:24}

继承属性

从原型对象上继承而来的属性,称之为继承属性,虽然obj1本身没有定义z属性,但是他的原型链上有z属性,因此当使用obj1.z进行访问的时是可以访问到原型链上的z属性的。

  let obj1 = {x:12,y:24}
  obj1.__proto__.z = 36
  console.log(obj1)
  console.log(obj1.z)

在这里插入图片描述

按属性的用途进行分类

数据属性

一般来说我们定义的大多数都是数据属性,如下所示:

  • 数据属性拥有的属性描述符:
    1.value:属性的值
    2.writable:属性是否可写
    3.enumerable:属性是否可枚举
    4.configurable:属性是否可以配置
  let obj1 = {x:12,y:24}
  obj1.__proto__.z = 36
  console.log(obj1)
  console.log(Object.getOwnPropertyDescriptor(obj1,"x"))

运行结果:
在这里插入图片描述

存取器属性

ES5中,属性值可以使用一个或者两个方法代替,这两个方法就getter和setter定义的属性,这样定义的属性称之为 “存取器属性”,与“数据属性”的属性描述符不同,这里的get相当于数据属性的"value",set相当于"writable"。

  let p = {
      x:3,
      y:4,
      get r  (){
          return Math.sqrt(this.x * this.x + this.y * this.y)
      },
      set r (newValue){
          var oldValue = Math.sqrt(this.x * this.x + this.y * this.y)
          var ratio = newValue/oldValue
           this.y *= ratio
           this.x *= ratio
      }
  }
  console.log(p.r)
  console.log(p.hasOwnProperty("r"));
  console.log(Object.getOwnPropertyNames(p))
  console.log(Object.getOwnPropertyDescriptor(p,"r"))

运行结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jaywei.online

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值